llvm-capstone/libc/config/gpu/api.td
Joseph Huber bf85f27370
[libc] Implement 'qsort' and 'bsearch' on the GPU (#66230)
Summary:
This patch simply adds the necessary config to enable qsort and bsearch
on the GPU. It is *highly* unlikely that anyone will use these, as they
are single threaded, but we may as well support all entrypoints that we
can.
2023-09-13 12:06:34 -05:00

81 lines
1.4 KiB
TableGen

include "config/public_api.td"
include "spec/stdc.td"
include "spec/posix.td"
include "spec/gpu_ext.td"
include "spec/gnu_ext.td"
include "spec/llvm_libc_ext.td"
def AssertMacro : MacroDef<"assert"> {
let Defn = [{
#undef assert
#ifdef NDEBUG
#define assert(e) (void)0
#else
#define assert(e) \
((e) ? (void)0 : __assert_fail(#e, __FILE__, __LINE__, __PRETTY_FUNCTION__))
#endif
}];
}
def StaticAssertMacro : MacroDef<"static_assert"> {
let Defn = [{
#ifndef __cplusplus
#undef static_assert
#define static_assert _Static_assert
#endif
}];
}
def AssertAPI : PublicAPI<"assert.h"> {
let Macros = [
AssertMacro,
StaticAssertMacro,
];
}
def StringAPI : PublicAPI<"string.h"> {
let Types = ["size_t"];
}
def StdlibAPI : PublicAPI<"stdlib.h"> {
let Types = [
"div_t",
"ldiv_t",
"lldiv_t",
"size_t",
"__bsearchcompare_t",
"__qsortcompare_t",
"__qsortrcompare_t",
"__atexithandler_t",
];
}
def FenvAPI: PublicAPI<"fenv.h"> {
let Types = ["fenv_t"];
}
def StdIOAPI : PublicAPI<"stdio.h"> {
let Macros = [
SimpleMacroDef<"_IOFBF", "0">,
SimpleMacroDef<"_IOLBF", "1">,
SimpleMacroDef<"_IONBF", "2">,
SimpleMacroDef<"EOF", "-1">,
];
let Types = ["size_t", "FILE"];
}
def IntTypesAPI : PublicAPI<"inttypes.h"> {
let Types = ["imaxdiv_t"];
}
def TimeAPI : PublicAPI<"time.h"> {
let Types = [
"clock_t",
"time_t",
"struct timespec",
];
}