Update std atomic check and simd compatibility check for arc compiler (#3716)

This commit is contained in:
TianlongLiang 2024-08-16 10:12:23 +08:00 committed by GitHub
parent b845e2ede4
commit 63df2cf02d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 3 deletions

View File

@ -3121,7 +3121,8 @@ aot_create_comp_context(const AOTCompData *comp_data, aot_comp_option_t option)
#endif
if (option->enable_simd && strcmp(comp_ctx->target_arch, "x86_64") != 0
&& strncmp(comp_ctx->target_arch, "aarch64", 7) != 0) {
&& strncmp(comp_ctx->target_arch, "aarch64", 7) != 0
&& strcmp(comp_ctx->target_arch, "arc") != 0) {
/* Disable simd if it isn't supported by target arch */
option->enable_simd = false;
}

View File

@ -176,6 +176,9 @@ aot_check_simd_compatibility(const char *arch_c_str, const char *cpu_c_str)
else if (targetArch == llvm::Triple::aarch64) {
return subTargetInfo->checkFeatures("+neon");
}
else if (targetArch == llvm::Triple::arc) {
return true;
}
else {
return false;
}

View File

@ -104,8 +104,9 @@ os_thread_exit(void *retval);
#endif
/* Clang's __GNUC_PREREQ macro has a different meaning than GCC one,
so we have to handle this case specially */
#if defined(__clang__)
so we have to handle this case specially(except the CCAC compiler
provided by MetaWare, which doesn't support atomic operations) */
#if defined(__clang__) && !defined(__CCAC__)
/* Clang provides stdatomic.h since 3.6.0
See https://releases.llvm.org/3.6.0/tools/clang/docs/ReleaseNotes.html */
#if __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 6)