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