mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 22:00:10 +00:00
bf85f27370
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.
81 lines
1.4 KiB
TableGen
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",
|
|
];
|
|
}
|