1*67e74705SXin Li/*===---- module.modulemap - intrinsics module map -------------------------=== 2*67e74705SXin Li * 3*67e74705SXin Li * Permission is hereby granted, free of charge, to any person obtaining a copy 4*67e74705SXin Li * of this software and associated documentation files (the "Software"), to deal 5*67e74705SXin Li * in the Software without restriction, including without limitation the rights 6*67e74705SXin Li * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7*67e74705SXin Li * copies of the Software, and to permit persons to whom the Software is 8*67e74705SXin Li * furnished to do so, subject to the following conditions: 9*67e74705SXin Li * 10*67e74705SXin Li * The above copyright notice and this permission notice shall be included in 11*67e74705SXin Li * all copies or substantial portions of the Software. 12*67e74705SXin Li * 13*67e74705SXin Li * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14*67e74705SXin Li * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15*67e74705SXin Li * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16*67e74705SXin Li * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17*67e74705SXin Li * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18*67e74705SXin Li * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19*67e74705SXin Li * THE SOFTWARE. 20*67e74705SXin Li * 21*67e74705SXin Li *===-----------------------------------------------------------------------=== 22*67e74705SXin Li */ 23*67e74705SXin Li 24*67e74705SXin Limodule _Builtin_intrinsics [system] [extern_c] { 25*67e74705SXin Li explicit module altivec { 26*67e74705SXin Li requires altivec 27*67e74705SXin Li header "altivec.h" 28*67e74705SXin Li } 29*67e74705SXin Li 30*67e74705SXin Li explicit module arm { 31*67e74705SXin Li requires arm 32*67e74705SXin Li 33*67e74705SXin Li explicit module acle { 34*67e74705SXin Li header "arm_acle.h" 35*67e74705SXin Li export * 36*67e74705SXin Li } 37*67e74705SXin Li 38*67e74705SXin Li explicit module neon { 39*67e74705SXin Li requires neon 40*67e74705SXin Li header "arm_neon.h" 41*67e74705SXin Li export * 42*67e74705SXin Li } 43*67e74705SXin Li } 44*67e74705SXin Li 45*67e74705SXin Li explicit module intel { 46*67e74705SXin Li requires x86 47*67e74705SXin Li export * 48*67e74705SXin Li 49*67e74705SXin Li header "immintrin.h" 50*67e74705SXin Li textual header "f16cintrin.h" 51*67e74705SXin Li textual header "avxintrin.h" 52*67e74705SXin Li textual header "avx2intrin.h" 53*67e74705SXin Li textual header "avx512fintrin.h" 54*67e74705SXin Li textual header "avx512erintrin.h" 55*67e74705SXin Li textual header "fmaintrin.h" 56*67e74705SXin Li 57*67e74705SXin Li header "x86intrin.h" 58*67e74705SXin Li textual header "bmiintrin.h" 59*67e74705SXin Li textual header "bmi2intrin.h" 60*67e74705SXin Li textual header "lzcntintrin.h" 61*67e74705SXin Li textual header "xopintrin.h" 62*67e74705SXin Li textual header "fma4intrin.h" 63*67e74705SXin Li textual header "mwaitxintrin.h" 64*67e74705SXin Li 65*67e74705SXin Li explicit module mm_malloc { 66*67e74705SXin Li header "mm_malloc.h" 67*67e74705SXin Li export * // note: for <stdlib.h> dependency 68*67e74705SXin Li } 69*67e74705SXin Li 70*67e74705SXin Li explicit module cpuid { 71*67e74705SXin Li header "cpuid.h" 72*67e74705SXin Li } 73*67e74705SXin Li 74*67e74705SXin Li explicit module mmx { 75*67e74705SXin Li header "mmintrin.h" 76*67e74705SXin Li } 77*67e74705SXin Li 78*67e74705SXin Li explicit module sse { 79*67e74705SXin Li export mm_malloc 80*67e74705SXin Li export mmx 81*67e74705SXin Li export sse2 // note: for hackish <emmintrin.h> dependency 82*67e74705SXin Li header "xmmintrin.h" 83*67e74705SXin Li } 84*67e74705SXin Li 85*67e74705SXin Li explicit module sse2 { 86*67e74705SXin Li export sse 87*67e74705SXin Li header "emmintrin.h" 88*67e74705SXin Li } 89*67e74705SXin Li 90*67e74705SXin Li explicit module sse3 { 91*67e74705SXin Li export sse2 92*67e74705SXin Li header "pmmintrin.h" 93*67e74705SXin Li } 94*67e74705SXin Li 95*67e74705SXin Li explicit module ssse3 { 96*67e74705SXin Li export sse3 97*67e74705SXin Li header "tmmintrin.h" 98*67e74705SXin Li } 99*67e74705SXin Li 100*67e74705SXin Li explicit module sse4_1 { 101*67e74705SXin Li export ssse3 102*67e74705SXin Li header "smmintrin.h" 103*67e74705SXin Li } 104*67e74705SXin Li 105*67e74705SXin Li explicit module sse4_2 { 106*67e74705SXin Li export sse4_1 107*67e74705SXin Li header "nmmintrin.h" 108*67e74705SXin Li } 109*67e74705SXin Li 110*67e74705SXin Li explicit module sse4a { 111*67e74705SXin Li export sse3 112*67e74705SXin Li header "ammintrin.h" 113*67e74705SXin Li } 114*67e74705SXin Li 115*67e74705SXin Li explicit module popcnt { 116*67e74705SXin Li header "popcntintrin.h" 117*67e74705SXin Li } 118*67e74705SXin Li 119*67e74705SXin Li explicit module mm3dnow { 120*67e74705SXin Li header "mm3dnow.h" 121*67e74705SXin Li } 122*67e74705SXin Li 123*67e74705SXin Li explicit module aes_pclmul { 124*67e74705SXin Li header "wmmintrin.h" 125*67e74705SXin Li export aes 126*67e74705SXin Li export pclmul 127*67e74705SXin Li } 128*67e74705SXin Li 129*67e74705SXin Li explicit module aes { 130*67e74705SXin Li header "__wmmintrin_aes.h" 131*67e74705SXin Li } 132*67e74705SXin Li 133*67e74705SXin Li explicit module pclmul { 134*67e74705SXin Li header "__wmmintrin_pclmul.h" 135*67e74705SXin Li } 136*67e74705SXin Li } 137*67e74705SXin Li 138*67e74705SXin Li explicit module systemz { 139*67e74705SXin Li requires systemz 140*67e74705SXin Li export * 141*67e74705SXin Li 142*67e74705SXin Li header "s390intrin.h" 143*67e74705SXin Li 144*67e74705SXin Li explicit module htm { 145*67e74705SXin Li requires htm 146*67e74705SXin Li header "htmintrin.h" 147*67e74705SXin Li header "htmxlintrin.h" 148*67e74705SXin Li } 149*67e74705SXin Li 150*67e74705SXin Li explicit module zvector { 151*67e74705SXin Li requires zvector, vx 152*67e74705SXin Li header "vecintrin.h" 153*67e74705SXin Li } 154*67e74705SXin Li } 155*67e74705SXin Li} 156*67e74705SXin Li 157*67e74705SXin Limodule _Builtin_stddef_max_align_t [system] [extern_c] { 158*67e74705SXin Li header "__stddef_max_align_t.h" 159*67e74705SXin Li} 160*67e74705SXin Li 161*67e74705SXin Limodule opencl_c { 162*67e74705SXin Li requires opencl 163*67e74705SXin Li header "opencl-c.h" 164*67e74705SXin Li} 165