1*0b57cec5SDimitry Andric/*===---- module.modulemap - intrinsics module map -------------------------=== 2*0b57cec5SDimitry Andric * 3*0b57cec5SDimitry Andric * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*0b57cec5SDimitry Andric * See https://llvm.org/LICENSE.txt for license information. 5*0b57cec5SDimitry Andric * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*0b57cec5SDimitry Andric * 7*0b57cec5SDimitry Andric *===-----------------------------------------------------------------------=== 8*0b57cec5SDimitry Andric */ 9*0b57cec5SDimitry Andric 10*0b57cec5SDimitry Andricmodule _Builtin_intrinsics [system] [extern_c] { 11*0b57cec5SDimitry Andric explicit module altivec { 12*0b57cec5SDimitry Andric requires altivec 13*0b57cec5SDimitry Andric header "altivec.h" 14*0b57cec5SDimitry Andric } 15*0b57cec5SDimitry Andric 16*0b57cec5SDimitry Andric explicit module arm { 17*0b57cec5SDimitry Andric requires arm 18*0b57cec5SDimitry Andric 19*0b57cec5SDimitry Andric explicit module acle { 20*0b57cec5SDimitry Andric header "arm_acle.h" 21*0b57cec5SDimitry Andric export * 22*0b57cec5SDimitry Andric } 23*0b57cec5SDimitry Andric 24*0b57cec5SDimitry Andric explicit module neon { 25*0b57cec5SDimitry Andric requires neon 26*0b57cec5SDimitry Andric header "arm_neon.h" 27*0b57cec5SDimitry Andric header "arm_fp16.h" 28*0b57cec5SDimitry Andric export * 29*0b57cec5SDimitry Andric } 30*0b57cec5SDimitry Andric } 31*0b57cec5SDimitry Andric 32*0b57cec5SDimitry Andric explicit module intel { 33*0b57cec5SDimitry Andric requires x86 34*0b57cec5SDimitry Andric export * 35*0b57cec5SDimitry Andric 36*0b57cec5SDimitry Andric header "immintrin.h" 37*0b57cec5SDimitry Andric textual header "f16cintrin.h" 38*0b57cec5SDimitry Andric textual header "avxintrin.h" 39*0b57cec5SDimitry Andric textual header "avx2intrin.h" 40*0b57cec5SDimitry Andric textual header "avx512fintrin.h" 41*0b57cec5SDimitry Andric textual header "avx512erintrin.h" 42*0b57cec5SDimitry Andric textual header "fmaintrin.h" 43*0b57cec5SDimitry Andric 44*0b57cec5SDimitry Andric header "x86intrin.h" 45*0b57cec5SDimitry Andric textual header "bmiintrin.h" 46*0b57cec5SDimitry Andric textual header "bmi2intrin.h" 47*0b57cec5SDimitry Andric textual header "lzcntintrin.h" 48*0b57cec5SDimitry Andric textual header "xopintrin.h" 49*0b57cec5SDimitry Andric textual header "fma4intrin.h" 50*0b57cec5SDimitry Andric textual header "mwaitxintrin.h" 51*0b57cec5SDimitry Andric textual header "clzerointrin.h" 52*0b57cec5SDimitry Andric textual header "wbnoinvdintrin.h" 53*0b57cec5SDimitry Andric textual header "cldemoteintrin.h" 54*0b57cec5SDimitry Andric textual header "waitpkgintrin.h" 55*0b57cec5SDimitry Andric textual header "movdirintrin.h" 56*0b57cec5SDimitry Andric textual header "pconfigintrin.h" 57*0b57cec5SDimitry Andric textual header "sgxintrin.h" 58*0b57cec5SDimitry Andric textual header "ptwriteintrin.h" 59*0b57cec5SDimitry Andric textual header "invpcidintrin.h" 60*0b57cec5SDimitry Andric 61*0b57cec5SDimitry Andric textual header "__wmmintrin_aes.h" 62*0b57cec5SDimitry Andric textual header "__wmmintrin_pclmul.h" 63*0b57cec5SDimitry Andric 64*0b57cec5SDimitry Andric explicit module mm_malloc { 65*0b57cec5SDimitry Andric requires !freestanding 66*0b57cec5SDimitry Andric header "mm_malloc.h" 67*0b57cec5SDimitry Andric export * // note: for <stdlib.h> dependency 68*0b57cec5SDimitry Andric } 69*0b57cec5SDimitry Andric 70*0b57cec5SDimitry Andric explicit module cpuid { 71*0b57cec5SDimitry Andric requires gnuinlineasm 72*0b57cec5SDimitry Andric header "cpuid.h" 73*0b57cec5SDimitry Andric } 74*0b57cec5SDimitry Andric 75*0b57cec5SDimitry Andric explicit module mmx { 76*0b57cec5SDimitry Andric header "mmintrin.h" 77*0b57cec5SDimitry Andric } 78*0b57cec5SDimitry Andric 79*0b57cec5SDimitry Andric explicit module sse { 80*0b57cec5SDimitry Andric export mm_malloc 81*0b57cec5SDimitry Andric export mmx 82*0b57cec5SDimitry Andric export sse2 // note: for hackish <emmintrin.h> dependency 83*0b57cec5SDimitry Andric header "xmmintrin.h" 84*0b57cec5SDimitry Andric } 85*0b57cec5SDimitry Andric 86*0b57cec5SDimitry Andric explicit module sse2 { 87*0b57cec5SDimitry Andric export sse 88*0b57cec5SDimitry Andric header "emmintrin.h" 89*0b57cec5SDimitry Andric } 90*0b57cec5SDimitry Andric 91*0b57cec5SDimitry Andric explicit module sse3 { 92*0b57cec5SDimitry Andric export sse2 93*0b57cec5SDimitry Andric header "pmmintrin.h" 94*0b57cec5SDimitry Andric } 95*0b57cec5SDimitry Andric 96*0b57cec5SDimitry Andric explicit module ssse3 { 97*0b57cec5SDimitry Andric export sse3 98*0b57cec5SDimitry Andric header "tmmintrin.h" 99*0b57cec5SDimitry Andric } 100*0b57cec5SDimitry Andric 101*0b57cec5SDimitry Andric explicit module sse4_1 { 102*0b57cec5SDimitry Andric export ssse3 103*0b57cec5SDimitry Andric header "smmintrin.h" 104*0b57cec5SDimitry Andric } 105*0b57cec5SDimitry Andric 106*0b57cec5SDimitry Andric explicit module sse4_2 { 107*0b57cec5SDimitry Andric export sse4_1 108*0b57cec5SDimitry Andric header "nmmintrin.h" 109*0b57cec5SDimitry Andric } 110*0b57cec5SDimitry Andric 111*0b57cec5SDimitry Andric explicit module sse4a { 112*0b57cec5SDimitry Andric export sse3 113*0b57cec5SDimitry Andric header "ammintrin.h" 114*0b57cec5SDimitry Andric } 115*0b57cec5SDimitry Andric 116*0b57cec5SDimitry Andric explicit module popcnt { 117*0b57cec5SDimitry Andric header "popcntintrin.h" 118*0b57cec5SDimitry Andric } 119*0b57cec5SDimitry Andric 120*0b57cec5SDimitry Andric explicit module mm3dnow { 121*0b57cec5SDimitry Andric header "mm3dnow.h" 122*0b57cec5SDimitry Andric } 123*0b57cec5SDimitry Andric 124*0b57cec5SDimitry Andric explicit module aes_pclmul { 125*0b57cec5SDimitry Andric header "wmmintrin.h" 126*0b57cec5SDimitry Andric export aes 127*0b57cec5SDimitry Andric export pclmul 128*0b57cec5SDimitry Andric } 129*0b57cec5SDimitry Andric } 130*0b57cec5SDimitry Andric 131*0b57cec5SDimitry Andric explicit module systemz { 132*0b57cec5SDimitry Andric requires systemz 133*0b57cec5SDimitry Andric export * 134*0b57cec5SDimitry Andric 135*0b57cec5SDimitry Andric header "s390intrin.h" 136*0b57cec5SDimitry Andric 137*0b57cec5SDimitry Andric explicit module htm { 138*0b57cec5SDimitry Andric requires htm 139*0b57cec5SDimitry Andric header "htmintrin.h" 140*0b57cec5SDimitry Andric header "htmxlintrin.h" 141*0b57cec5SDimitry Andric } 142*0b57cec5SDimitry Andric 143*0b57cec5SDimitry Andric explicit module zvector { 144*0b57cec5SDimitry Andric requires zvector, vx 145*0b57cec5SDimitry Andric header "vecintrin.h" 146*0b57cec5SDimitry Andric } 147*0b57cec5SDimitry Andric } 148*0b57cec5SDimitry Andric} 149*0b57cec5SDimitry Andric 150*0b57cec5SDimitry Andricmodule _Builtin_stddef_max_align_t [system] [extern_c] { 151*0b57cec5SDimitry Andric header "__stddef_max_align_t.h" 152*0b57cec5SDimitry Andric} 153*0b57cec5SDimitry Andric 154*0b57cec5SDimitry Andricmodule opencl_c { 155*0b57cec5SDimitry Andric requires opencl 156*0b57cec5SDimitry Andric header "opencl-c.h" 157*0b57cec5SDimitry Andric header "opencl-c-base.h" 158*0b57cec5SDimitry Andric} 159