xref: /freebsd/contrib/llvm-project/clang/lib/Headers/module.modulemap (revision 5ffd83dbcc34f10e07f6d3e968ae6365869615f4)
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    }
30*5ffd83dbSDimitry Andric
31*5ffd83dbSDimitry Andric    explicit module sve {
32*5ffd83dbSDimitry Andric      requires sve
33*5ffd83dbSDimitry Andric      header "arm_sve.h"
34*5ffd83dbSDimitry Andric      export *
35*5ffd83dbSDimitry 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
1560b57cec5SDimitry Andricmodule _Builtin_stddef_max_align_t [system] [extern_c] {
1570b57cec5SDimitry Andric  header "__stddef_max_align_t.h"
1580b57cec5SDimitry Andric}
1590b57cec5SDimitry Andric
1600b57cec5SDimitry Andricmodule opencl_c {
1610b57cec5SDimitry Andric  requires opencl
1620b57cec5SDimitry Andric  header "opencl-c.h"
1630b57cec5SDimitry Andric  header "opencl-c-base.h"
1640b57cec5SDimitry Andric}
165