106f32e7eSjoerg/*===---- module.modulemap - intrinsics module map -------------------------===
206f32e7eSjoerg *
306f32e7eSjoerg * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
406f32e7eSjoerg * See https://llvm.org/LICENSE.txt for license information.
506f32e7eSjoerg * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
606f32e7eSjoerg *
706f32e7eSjoerg *===-----------------------------------------------------------------------===
806f32e7eSjoerg */
906f32e7eSjoerg
1006f32e7eSjoergmodule _Builtin_intrinsics [system] [extern_c] {
1106f32e7eSjoerg  explicit module altivec {
1206f32e7eSjoerg    requires altivec
1306f32e7eSjoerg    header "altivec.h"
1406f32e7eSjoerg  }
1506f32e7eSjoerg
1606f32e7eSjoerg  explicit module arm {
1706f32e7eSjoerg    requires arm
1806f32e7eSjoerg
1906f32e7eSjoerg    explicit module acle {
2006f32e7eSjoerg      header "arm_acle.h"
2106f32e7eSjoerg      export *
2206f32e7eSjoerg    }
2306f32e7eSjoerg
2406f32e7eSjoerg    explicit module neon {
2506f32e7eSjoerg      requires neon
2606f32e7eSjoerg      header "arm_neon.h"
2706f32e7eSjoerg      header "arm_fp16.h"
2806f32e7eSjoerg      export *
2906f32e7eSjoerg    }
30*13fbcb42Sjoerg
31*13fbcb42Sjoerg    explicit module sve {
32*13fbcb42Sjoerg      requires sve
33*13fbcb42Sjoerg      header "arm_sve.h"
34*13fbcb42Sjoerg      export *
35*13fbcb42Sjoerg    }
3606f32e7eSjoerg  }
3706f32e7eSjoerg
3806f32e7eSjoerg  explicit module intel {
3906f32e7eSjoerg    requires x86
4006f32e7eSjoerg    export *
4106f32e7eSjoerg
4206f32e7eSjoerg    header "immintrin.h"
4306f32e7eSjoerg    textual header "f16cintrin.h"
4406f32e7eSjoerg    textual header "avxintrin.h"
4506f32e7eSjoerg    textual header "avx2intrin.h"
4606f32e7eSjoerg    textual header "avx512fintrin.h"
4706f32e7eSjoerg    textual header "avx512erintrin.h"
4806f32e7eSjoerg    textual header "fmaintrin.h"
4906f32e7eSjoerg
5006f32e7eSjoerg    header "x86intrin.h"
5106f32e7eSjoerg    textual header "bmiintrin.h"
5206f32e7eSjoerg    textual header "bmi2intrin.h"
5306f32e7eSjoerg    textual header "lzcntintrin.h"
5406f32e7eSjoerg    textual header "xopintrin.h"
5506f32e7eSjoerg    textual header "fma4intrin.h"
5606f32e7eSjoerg    textual header "mwaitxintrin.h"
5706f32e7eSjoerg    textual header "clzerointrin.h"
5806f32e7eSjoerg    textual header "wbnoinvdintrin.h"
5906f32e7eSjoerg    textual header "cldemoteintrin.h"
6006f32e7eSjoerg    textual header "waitpkgintrin.h"
6106f32e7eSjoerg    textual header "movdirintrin.h"
6206f32e7eSjoerg    textual header "pconfigintrin.h"
6306f32e7eSjoerg    textual header "sgxintrin.h"
6406f32e7eSjoerg    textual header "ptwriteintrin.h"
6506f32e7eSjoerg    textual header "invpcidintrin.h"
6606f32e7eSjoerg
6706f32e7eSjoerg    textual header "__wmmintrin_aes.h"
6806f32e7eSjoerg    textual header "__wmmintrin_pclmul.h"
6906f32e7eSjoerg
7006f32e7eSjoerg    explicit module mm_malloc {
7106f32e7eSjoerg      requires !freestanding
7206f32e7eSjoerg      header "mm_malloc.h"
7306f32e7eSjoerg      export * // note: for <stdlib.h> dependency
7406f32e7eSjoerg    }
7506f32e7eSjoerg
7606f32e7eSjoerg    explicit module cpuid {
7706f32e7eSjoerg      requires gnuinlineasm
7806f32e7eSjoerg      header "cpuid.h"
7906f32e7eSjoerg    }
8006f32e7eSjoerg
8106f32e7eSjoerg    explicit module mmx {
8206f32e7eSjoerg      header "mmintrin.h"
8306f32e7eSjoerg    }
8406f32e7eSjoerg
8506f32e7eSjoerg    explicit module sse {
8606f32e7eSjoerg      export mm_malloc
8706f32e7eSjoerg      export mmx
8806f32e7eSjoerg      export sse2 // note: for hackish <emmintrin.h> dependency
8906f32e7eSjoerg      header "xmmintrin.h"
9006f32e7eSjoerg    }
9106f32e7eSjoerg
9206f32e7eSjoerg    explicit module sse2 {
9306f32e7eSjoerg      export sse
9406f32e7eSjoerg      header "emmintrin.h"
9506f32e7eSjoerg    }
9606f32e7eSjoerg
9706f32e7eSjoerg    explicit module sse3 {
9806f32e7eSjoerg      export sse2
9906f32e7eSjoerg      header "pmmintrin.h"
10006f32e7eSjoerg    }
10106f32e7eSjoerg
10206f32e7eSjoerg    explicit module ssse3 {
10306f32e7eSjoerg      export sse3
10406f32e7eSjoerg      header "tmmintrin.h"
10506f32e7eSjoerg    }
10606f32e7eSjoerg
10706f32e7eSjoerg    explicit module sse4_1 {
10806f32e7eSjoerg      export ssse3
10906f32e7eSjoerg      header "smmintrin.h"
11006f32e7eSjoerg    }
11106f32e7eSjoerg
11206f32e7eSjoerg    explicit module sse4_2 {
11306f32e7eSjoerg      export sse4_1
11406f32e7eSjoerg      header "nmmintrin.h"
11506f32e7eSjoerg    }
11606f32e7eSjoerg
11706f32e7eSjoerg    explicit module sse4a {
11806f32e7eSjoerg      export sse3
11906f32e7eSjoerg      header "ammintrin.h"
12006f32e7eSjoerg    }
12106f32e7eSjoerg
12206f32e7eSjoerg    explicit module popcnt {
12306f32e7eSjoerg      header "popcntintrin.h"
12406f32e7eSjoerg    }
12506f32e7eSjoerg
12606f32e7eSjoerg    explicit module mm3dnow {
12706f32e7eSjoerg      header "mm3dnow.h"
12806f32e7eSjoerg    }
12906f32e7eSjoerg
13006f32e7eSjoerg    explicit module aes_pclmul {
13106f32e7eSjoerg      header "wmmintrin.h"
13206f32e7eSjoerg      export aes
13306f32e7eSjoerg      export pclmul
13406f32e7eSjoerg    }
13506f32e7eSjoerg  }
13606f32e7eSjoerg
13706f32e7eSjoerg  explicit module systemz {
13806f32e7eSjoerg    requires systemz
13906f32e7eSjoerg    export *
14006f32e7eSjoerg
14106f32e7eSjoerg    header "s390intrin.h"
14206f32e7eSjoerg
14306f32e7eSjoerg    explicit module htm {
14406f32e7eSjoerg      requires htm
14506f32e7eSjoerg      header "htmintrin.h"
14606f32e7eSjoerg      header "htmxlintrin.h"
14706f32e7eSjoerg    }
14806f32e7eSjoerg
14906f32e7eSjoerg    explicit module zvector {
15006f32e7eSjoerg      requires zvector, vx
15106f32e7eSjoerg      header "vecintrin.h"
15206f32e7eSjoerg    }
15306f32e7eSjoerg  }
15406f32e7eSjoerg}
15506f32e7eSjoerg
15606f32e7eSjoergmodule _Builtin_stddef_max_align_t [system] [extern_c] {
15706f32e7eSjoerg  header "__stddef_max_align_t.h"
15806f32e7eSjoerg}
15906f32e7eSjoerg
16006f32e7eSjoergmodule opencl_c {
16106f32e7eSjoerg  requires opencl
16206f32e7eSjoerg  header "opencl-c.h"
16306f32e7eSjoerg  header "opencl-c-base.h"
16406f32e7eSjoerg}
165