My little initializer script
This commit is contained in:
34
clangd/lib/clang/18/include/llvm_libc_wrappers/assert.h
Normal file
34
clangd/lib/clang/18/include/llvm_libc_wrappers/assert.h
Normal file
@@ -0,0 +1,34 @@
|
||||
//===-- Wrapper for C standard assert.h declarations on the GPU ------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_ASSERT_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_ASSERT_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <assert.h>
|
||||
|
||||
#if __has_include(<llvm-libc-decls/assert.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
#include <llvm-libc-decls/assert.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_ASSERT_H__
|
||||
102
clangd/lib/clang/18/include/llvm_libc_wrappers/ctype.h
Normal file
102
clangd/lib/clang/18/include/llvm_libc_wrappers/ctype.h
Normal file
@@ -0,0 +1,102 @@
|
||||
//===-- Wrapper for C standard ctype.h declarations on the GPU ------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_CTYPE_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_CTYPE_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
// The GNU headers like to define 'toupper' and 'tolower' redundantly. This is
|
||||
// necessary to prevent it from doing that and remapping our implementation.
|
||||
#if (defined(__NVPTX__) || defined(__AMDGPU__)) && defined(__GLIBC__)
|
||||
#pragma push_macro("__USE_EXTERN_INLINES")
|
||||
#undef __USE_EXTERN_INLINES
|
||||
#endif
|
||||
|
||||
#include_next <ctype.h>
|
||||
|
||||
#if (defined(__NVPTX__) || defined(__AMDGPU__)) && defined(__GLIBC__)
|
||||
#pragma pop_macro("__USE_EXTERN_INLINES")
|
||||
#endif
|
||||
|
||||
#if __has_include(<llvm-libc-decls/ctype.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
// The GNU headers like to provide these as macros, we need to undefine them so
|
||||
// they do not conflict with the following definitions for the GPU.
|
||||
|
||||
#pragma push_macro("isalnum")
|
||||
#pragma push_macro("isalpha")
|
||||
#pragma push_macro("isascii")
|
||||
#pragma push_macro("isblank")
|
||||
#pragma push_macro("iscntrl")
|
||||
#pragma push_macro("isdigit")
|
||||
#pragma push_macro("isgraph")
|
||||
#pragma push_macro("islower")
|
||||
#pragma push_macro("isprint")
|
||||
#pragma push_macro("ispunct")
|
||||
#pragma push_macro("isspace")
|
||||
#pragma push_macro("isupper")
|
||||
#pragma push_macro("isxdigit")
|
||||
#pragma push_macro("toascii")
|
||||
#pragma push_macro("tolower")
|
||||
#pragma push_macro("toupper")
|
||||
|
||||
#undef isalnum
|
||||
#undef isalpha
|
||||
#undef isascii
|
||||
#undef iscntrl
|
||||
#undef isdigit
|
||||
#undef islower
|
||||
#undef isgraph
|
||||
#undef isprint
|
||||
#undef ispunct
|
||||
#undef isspace
|
||||
#undef isupper
|
||||
#undef isblank
|
||||
#undef isxdigit
|
||||
#undef toascii
|
||||
#undef tolower
|
||||
#undef toupper
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
#include <llvm-libc-decls/ctype.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
// Restore the original macros when compiling on the host.
|
||||
#if !defined(__NVPTX__) && !defined(__AMDGPU__)
|
||||
#pragma pop_macro("isalnum")
|
||||
#pragma pop_macro("isalpha")
|
||||
#pragma pop_macro("isascii")
|
||||
#pragma pop_macro("isblank")
|
||||
#pragma pop_macro("iscntrl")
|
||||
#pragma pop_macro("isdigit")
|
||||
#pragma pop_macro("isgraph")
|
||||
#pragma pop_macro("islower")
|
||||
#pragma pop_macro("isprint")
|
||||
#pragma pop_macro("ispunct")
|
||||
#pragma pop_macro("isspace")
|
||||
#pragma pop_macro("isupper")
|
||||
#pragma pop_macro("isxdigit")
|
||||
#pragma pop_macro("toascii")
|
||||
#pragma pop_macro("tolower")
|
||||
#pragma pop_macro("toupper")
|
||||
#endif
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_CTYPE_H__
|
||||
34
clangd/lib/clang/18/include/llvm_libc_wrappers/inttypes.h
Normal file
34
clangd/lib/clang/18/include/llvm_libc_wrappers/inttypes.h
Normal file
@@ -0,0 +1,34 @@
|
||||
//===-- Wrapper for C standard inttypes.h declarations on the GPU ---------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_INTTYPES_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_INTTYPES_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <inttypes.h>
|
||||
|
||||
#if __has_include(<llvm-libc-decls/inttypes.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
#include <llvm-libc-decls/inttypes.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_INTTYPES_H__
|
||||
80
clangd/lib/clang/18/include/llvm_libc_wrappers/stdio.h
Normal file
80
clangd/lib/clang/18/include/llvm_libc_wrappers/stdio.h
Normal file
@@ -0,0 +1,80 @@
|
||||
//===-- Wrapper for C standard stdio.h declarations on the GPU ------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <stdio.h>
|
||||
|
||||
// In some old versions of glibc, other standard headers sometimes define
|
||||
// special macros (e.g., __need_FILE) before including stdio.h to cause stdio.h
|
||||
// to produce special definitions. Future includes of stdio.h when those
|
||||
// special macros are undefined are expected to produce the normal definitions
|
||||
// from stdio.h.
|
||||
//
|
||||
// We do not apply our include guard (__CLANG_LLVM_LIBC_WRAPPERS_STDIO_H__)
|
||||
// unconditionally to the above include_next. Otherwise, after an occurrence of
|
||||
// the first glibc stdio.h use case described above, the include_next would be
|
||||
// skipped for remaining includes of stdio.h, leaving required symbols
|
||||
// undefined.
|
||||
//
|
||||
// We make the following assumptions to handle all use cases:
|
||||
//
|
||||
// 1. If the above include_next produces special glibc definitions, then (a) it
|
||||
// does not produce the normal definitions that we must intercept below, (b)
|
||||
// the current file was included from a glibc header that already defined
|
||||
// __GLIBC__ (usually by including glibc's <features.h>), and (c) the above
|
||||
// include_next does not define _STDIO_H. In that case, we skip the rest of
|
||||
// the current file and don't guard against future includes.
|
||||
// 2. If the above include_next produces the normal stdio.h definitions, then
|
||||
// either (a) __GLIBC__ is not defined because C headers are from some other
|
||||
// libc implementation or (b) the above include_next defines _STDIO_H to
|
||||
// prevent the above include_next from having any effect in the future.
|
||||
#if !defined(__GLIBC__) || defined(_STDIO_H)
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_STDIO_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_STDIO_H__
|
||||
|
||||
#if __has_include(<llvm-libc-decls/stdio.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
// Some headers provide these as macros. Temporarily undefine them so they do
|
||||
// not conflict with any definitions for the GPU.
|
||||
|
||||
#pragma push_macro("stdout")
|
||||
#pragma push_macro("stdin")
|
||||
#pragma push_macro("stderr")
|
||||
|
||||
#undef stdout
|
||||
#undef stderr
|
||||
#undef stdin
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
#include <llvm-libc-decls/stdio.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
// Restore the original macros when compiling on the host.
|
||||
#if !defined(__NVPTX__) && !defined(__AMDGPU__)
|
||||
#pragma pop_macro("stdout")
|
||||
#pragma pop_macro("stderr")
|
||||
#pragma pop_macro("stdin")
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_STDIO_H__
|
||||
|
||||
#endif
|
||||
45
clangd/lib/clang/18/include/llvm_libc_wrappers/stdlib.h
Normal file
45
clangd/lib/clang/18/include/llvm_libc_wrappers/stdlib.h
Normal file
@@ -0,0 +1,45 @@
|
||||
//===-- Wrapper for C standard stdlib.h declarations on the GPU -----------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_STDLIB_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_STDLIB_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <stdlib.h>
|
||||
|
||||
#if __has_include(<llvm-libc-decls/stdlib.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
// The LLVM C library uses these named types so we forward declare them.
|
||||
typedef void (*__atexithandler_t)(void);
|
||||
typedef int (*__bsearchcompare_t)(const void *, const void *);
|
||||
typedef int (*__qsortcompare_t)(const void *, const void *);
|
||||
typedef int (*__qsortrcompare_t)(const void *, const void *, void *);
|
||||
|
||||
// Enforce ABI compatibility with the structs used by the LLVM C library.
|
||||
_Static_assert(__builtin_offsetof(div_t, quot) == 0, "ABI mismatch!");
|
||||
_Static_assert(__builtin_offsetof(ldiv_t, quot) == 0, "ABI mismatch!");
|
||||
_Static_assert(__builtin_offsetof(lldiv_t, quot) == 0, "ABI mismatch!");
|
||||
|
||||
#include <llvm-libc-decls/stdlib.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_STDLIB_H__
|
||||
96
clangd/lib/clang/18/include/llvm_libc_wrappers/string.h
Normal file
96
clangd/lib/clang/18/include/llvm_libc_wrappers/string.h
Normal file
@@ -0,0 +1,96 @@
|
||||
//===-- Wrapper for C standard string.h declarations on the GPU -----------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_STRING_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_STRING_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <string.h>
|
||||
|
||||
#if __has_include(<llvm-libc-decls/string.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
// The GNU headers provide C++ standard compliant headers when in C++ mode and
|
||||
// the LLVM libc does not. We need to manually provide the definitions using the
|
||||
// same prototypes.
|
||||
#if defined(__cplusplus) && defined(__GLIBC__) && \
|
||||
defined(__CORRECT_ISO_CPP_STRING_H_PROTO)
|
||||
|
||||
#ifndef __LIBC_ATTRS
|
||||
#define __LIBC_ATTRS
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
void *memccpy(void *__restrict, const void *__restrict, int,
|
||||
size_t) __LIBC_ATTRS;
|
||||
int memcmp(const void *, const void *, size_t) __LIBC_ATTRS;
|
||||
void *memcpy(void *__restrict, const void *__restrict, size_t) __LIBC_ATTRS;
|
||||
void *memmem(const void *, size_t, const void *, size_t) __LIBC_ATTRS;
|
||||
void *memmove(void *, const void *, size_t) __LIBC_ATTRS;
|
||||
void *mempcpy(void *__restrict, const void *__restrict, size_t) __LIBC_ATTRS;
|
||||
void *memset(void *, int, size_t) __LIBC_ATTRS;
|
||||
char *stpcpy(char *__restrict, const char *__restrict) __LIBC_ATTRS;
|
||||
char *stpncpy(char *__restrict, const char *__restrict, size_t) __LIBC_ATTRS;
|
||||
char *strcat(char *__restrict, const char *__restrict) __LIBC_ATTRS;
|
||||
int strcmp(const char *, const char *) __LIBC_ATTRS;
|
||||
int strcoll(const char *, const char *) __LIBC_ATTRS;
|
||||
char *strcpy(char *__restrict, const char *__restrict) __LIBC_ATTRS;
|
||||
size_t strcspn(const char *, const char *) __LIBC_ATTRS;
|
||||
char *strdup(const char *) __LIBC_ATTRS;
|
||||
size_t strlen(const char *) __LIBC_ATTRS;
|
||||
char *strncat(char *__restrict, const char *__restrict, size_t) __LIBC_ATTRS;
|
||||
int strncmp(const char *, const char *, size_t) __LIBC_ATTRS;
|
||||
char *strncpy(char *__restrict, const char *__restrict, size_t) __LIBC_ATTRS;
|
||||
char *strndup(const char *, size_t) __LIBC_ATTRS;
|
||||
size_t strnlen(const char *, size_t) __LIBC_ATTRS;
|
||||
size_t strspn(const char *, const char *) __LIBC_ATTRS;
|
||||
char *strtok(char *__restrict, const char *__restrict) __LIBC_ATTRS;
|
||||
char *strtok_r(char *__restrict, const char *__restrict,
|
||||
char **__restrict) __LIBC_ATTRS;
|
||||
size_t strxfrm(char *__restrict, const char *__restrict, size_t) __LIBC_ATTRS;
|
||||
}
|
||||
|
||||
extern "C++" {
|
||||
char *strstr(char *, const char *) noexcept __LIBC_ATTRS;
|
||||
const char *strstr(const char *, const char *) noexcept __LIBC_ATTRS;
|
||||
char *strpbrk(char *, const char *) noexcept __LIBC_ATTRS;
|
||||
const char *strpbrk(const char *, const char *) noexcept __LIBC_ATTRS;
|
||||
char *strrchr(char *, int) noexcept __LIBC_ATTRS;
|
||||
const char *strrchr(const char *, int) noexcept __LIBC_ATTRS;
|
||||
char *strchr(char *, int) noexcept __LIBC_ATTRS;
|
||||
const char *strchr(const char *, int) noexcept __LIBC_ATTRS;
|
||||
char *strchrnul(char *, int) noexcept __LIBC_ATTRS;
|
||||
const char *strchrnul(const char *, int) noexcept __LIBC_ATTRS;
|
||||
char *strcasestr(char *, const char *) noexcept __LIBC_ATTRS;
|
||||
const char *strcasestr(const char *, const char *) noexcept __LIBC_ATTRS;
|
||||
void *memrchr(void *__s, int __c, size_t __n) noexcept __LIBC_ATTRS;
|
||||
const void *memrchr(const void *__s, int __c, size_t __n) noexcept __LIBC_ATTRS;
|
||||
void *memchr(void *__s, int __c, size_t __n) noexcept __LIBC_ATTRS;
|
||||
const void *memchr(const void *__s, int __c, size_t __n) noexcept __LIBC_ATTRS;
|
||||
}
|
||||
|
||||
#else
|
||||
#include <llvm-libc-decls/string.h>
|
||||
|
||||
#endif
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#undef __LIBC_ATTRS
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_STRING_H__
|
||||
34
clangd/lib/clang/18/include/llvm_libc_wrappers/time.h
Normal file
34
clangd/lib/clang/18/include/llvm_libc_wrappers/time.h
Normal file
@@ -0,0 +1,34 @@
|
||||
//===-- Wrapper for C standard time.h declarations on the GPU -------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __CLANG_LLVM_LIBC_WRAPPERS_TIME_H__
|
||||
#define __CLANG_LLVM_LIBC_WRAPPERS_TIME_H__
|
||||
|
||||
#if !defined(_OPENMP) && !defined(__HIP__) && !defined(__CUDA__)
|
||||
#error "This file is for GPU offloading compilation only"
|
||||
#endif
|
||||
|
||||
#include_next <time.h>
|
||||
|
||||
#if __has_include(<llvm-libc-decls/time.h>)
|
||||
|
||||
#if defined(__HIP__) || defined(__CUDA__)
|
||||
#define __LIBC_ATTRS __attribute__((device))
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare target
|
||||
|
||||
_Static_assert(sizeof(clock_t) == sizeof(long), "ABI mismatch!");
|
||||
|
||||
#include <llvm-libc-decls/time.h>
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __CLANG_LLVM_LIBC_WRAPPERS_TIME_H__
|
||||
Reference in New Issue
Block a user