/*===---- module.modulemap - intrinsics module map -------------------------===
 *
 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 * See https://llvm.org/LICENSE.txt for license information.
 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 *
 *===-----------------------------------------------------------------------===
 */

module _Builtin_intrinsics [system] [extern_c] {
  explicit module altivec {
    requires altivec
    header "altivec.h"
  }

  explicit module arm {
    requires arm

    explicit module acle {
      header "arm_acle.h"
      export *
    }

    explicit module bf16 {
      header "arm_bf16.h"
      export *
    }

    explicit module fp16 {
      header "arm_fp16.h"
      export *
    }

    explicit module neon {
      requires neon
      header "arm_neon.h"
      export *
    }

    explicit module sve {
      requires sve
      header "arm_sve.h"
      export *
    }
  }

  explicit module arm64 {
    requires arm64
    requires windows

    header "arm64intr.h"
    export *
  }

  explicit module intel {
    requires x86
    export *

    header "immintrin.h"
    textual header "f16cintrin.h"
    textual header "avxintrin.h"
    textual header "avx2intrin.h"
    textual header "avx512fintrin.h"
    textual header "fmaintrin.h"

    header "x86intrin.h"
    textual header "bmiintrin.h"
    textual header "bmi2intrin.h"
    textual header "lzcntintrin.h"
    textual header "xopintrin.h"
    textual header "fma4intrin.h"
    textual header "mwaitxintrin.h"
    textual header "clzerointrin.h"
    textual header "wbnoinvdintrin.h"
    textual header "cldemoteintrin.h"
    textual header "waitpkgintrin.h"
    textual header "movdirintrin.h"
    textual header "pconfigintrin.h"
    textual header "sgxintrin.h"
    textual header "ptwriteintrin.h"
    textual header "invpcidintrin.h"

    textual header "__wmmintrin_aes.h"
    textual header "__wmmintrin_pclmul.h"

    textual header "mm3dnow.h"

    explicit module mm_malloc {
      requires !freestanding
      header "mm_malloc.h"
      export * // note: for <stdlib.h> dependency
    }

    explicit module cpuid {
      requires gnuinlineasm
      header "cpuid.h"
    }

    explicit module mmx {
      header "mmintrin.h"
    }

    explicit module sse {
      export mm_malloc
      export mmx
      export sse2 // note: for hackish <emmintrin.h> dependency
      header "xmmintrin.h"
    }

    explicit module sse2 {
      export sse
      header "emmintrin.h"
    }

    explicit module sse3 {
      export sse2
      header "pmmintrin.h"
    }

    explicit module ssse3 {
      export sse3
      header "tmmintrin.h"
    }

    explicit module sse4_1 {
      export ssse3
      header "smmintrin.h"
    }

    explicit module sse4_2 {
      export sse4_1
      header "nmmintrin.h"
    }

    explicit module sse4a {
      export sse3
      header "ammintrin.h"
    }

    explicit module popcnt {
      header "popcntintrin.h"
    }

    explicit module aes_pclmul {
      header "wmmintrin.h"
      export aes
      export pclmul
    }
  }

  explicit module systemz {
    requires systemz
    export *

    header "s390intrin.h"

    explicit module htm {
      requires htm
      header "htmintrin.h"
      header "htmxlintrin.h"
    }

    explicit module zvector {
      requires zvector, vx
      header "vecintrin.h"
    }
  }
}

// Start -fbuiltin-headers-in-system-modules affected modules

// The following modules all ignore their headers when
// -fbuiltin-headers-in-system-modules is passed, and many of
// those headers join system modules when present.

// e.g. if -fbuiltin-headers-in-system-modules is passed, then
// float.h will not be in the _Builtin_float module (that module
// will be empty). If there is a system module that declares
// `header "float.h"`, then the builtin float.h will join
// that module. The system float.h (if present) will be treated
// as a textual header in the sytem module.
module _Builtin_float [system] {
  textual header "float.h"

  explicit module float {
    header "__float_float.h"
    export *
  }

  explicit module header_macro {
    header "__float_header_macro.h"
    export *
  }

  explicit module infinity_nan {
    header "__float_infinity_nan.h"
    export *
  }
}

module _Builtin_inttypes [system] {
  header "inttypes.h"
  export *
}

module _Builtin_iso646 [system] {
  header "iso646.h"
  export *
}

module _Builtin_limits [system] {
  header "limits.h"
  export *
}

module _Builtin_stdalign [system] {
  header "stdalign.h"
  export *
}

module _Builtin_stdarg [system] {
  textual header "stdarg.h"

  explicit module __gnuc_va_list {
    header "__stdarg___gnuc_va_list.h"
    export *
  }

  explicit module __va_copy {
    header "__stdarg___va_copy.h"
    export *
  }

  explicit module header_macro {
    header "__stdarg_header_macro.h"
    export *
  }

  explicit module va_arg {
    header "__stdarg_va_arg.h"
    export *
  }

  explicit module va_copy {
    header "__stdarg_va_copy.h"
    export *
  }

  explicit module va_list {
    header "__stdarg_va_list.h"
    export *
  }
}

module _Builtin_stdatomic [system] {
  header "stdatomic.h"
  export *
}

module _Builtin_stdbool [system] {
  header "stdbool.h"
  export *
}

module _Builtin_stdckdint [system] {
  header "stdckdint.h"
  export *
}

module _Builtin_stdcountof [system] {
  header "stdcountof.h"
  export *
}

module _Builtin_stddef [system] {
  textual header "stddef.h"

  explicit module header_macro {
    header "__stddef_header_macro.h"
    export *
  }
  // __stddef_max_align_t.h is always in this module, even if
  // -fbuiltin-headers-in-system-modules is passed.
  explicit module max_align_t {
    header "__stddef_max_align_t.h"
    export *
  }

  explicit module null {
    header "__stddef_null.h"
    export *
  }

  explicit module nullptr_t {
    header "__stddef_nullptr_t.h"
    export *
  }

  explicit module offsetof {
    header "__stddef_offsetof.h"
    export *
  }

  explicit module ptrdiff_t {
    header "__stddef_ptrdiff_t.h"
    export *
  }

  explicit module rsize_t {
    header "__stddef_rsize_t.h"
    export *
  }

  explicit module size_t {
    header "__stddef_size_t.h"
    export *
  }

  explicit module unreachable {
    header "__stddef_unreachable.h"
    export *
  }

  explicit module wchar_t {
    header "__stddef_wchar_t.h"
    export *
  }
}

// wint_t is provided by <wchar.h> and not <stddef.h>. It's here
// for compatibility, but must be explicitly requested. Therefore
// __stddef_wint_t.h is not part of _Builtin_stddef. It is always in
// this module even if -fbuiltin-headers-in-system-modules is passed.
module _Builtin_stddef_wint_t [system] {
  header "__stddef_wint_t.h"
  export *
}

module _Builtin_stdint [system] {
  header "stdint.h"
  export *
}

module _Builtin_stdnoreturn [system] {
  header "stdnoreturn.h"
  export *
}

module _Builtin_tgmath [system] {
  header "tgmath.h"
  export *
}

module _Builtin_unwind [system] {
  header "unwind.h"
  export *
}
// End -fbuiltin-headers-in-system-modules affected modules

module opencl_c [system] {
  requires opencl
  header "opencl-c.h"
  header "opencl-c-base.h"
}

module ptrauth [system] {
  header "ptrauth.h"
  export *
}
