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