#if CRASHPAD_HAS_FEATURE(ptrauth_intrinsics)
address = ptrauth_strip(address, ptrauth_key_function_pointer);
#elif defined(ARCH_CPU_ARM64)
+#if !defined(__GNUC__) || defined(__clang__)
// Strip any pointer authentication bits that are assigned to the address.
register uintptr_t x30 __asm("x30") = address;
asm("xpaclri" : "+r"(x30));
address = x30;
+#else
+ return address;
+#endif
#endif
return address;
}
cpu_arch_full == "arm-neon-cpu-detect" || current_cpu == "arm64") {
deps += [ ":libvpx_intrinsics_neon" ]
}
- if (current_cpu == "arm64") {
+ if (current_cpu == "arm64" && is_clang) {
deps += [ ":libvpx_intrinsics_neon_dotprod" ]
deps += [ ":libvpx_intrinsics_neon_i8mm" ]
}
// Armv7-A optional Neon instructions, mandatory from Armv8.0-A.
#define HAS_NEON (1 << 0)
+
+#if !defined(__GNUC__) || defined(__clang__)
// Armv8.2-A optional Neon dot-product instructions, mandatory from Armv8.4-A.
#define HAS_NEON_DOTPROD (1 << 1)
// Armv8.2-A optional Neon i8mm instructions, mandatory from Armv8.6-A.
#define HAS_NEON_I8MM (1 << 2)
+#else
+// gcc compilers have issues with dotprod & i8mm
+#define HAS_NEON_DOTPROD 0
+#define HAS_NEON_I8MM 0
+#endif
int arm_cpu_caps(void);
#define V8_TRAP_HANDLER_SUPPORTED true
// Arm64 (non-simulator) on Mac and Linux.
#elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_ARM64 && \
- (V8_OS_DARWIN || (V8_OS_LINUX && !V8_OS_ANDROID))
+ (V8_OS_DARWIN || (V8_OS_LINUX && !V8_OS_ANDROID)) && \
+ defined(__clang__)
#define V8_TRAP_HANDLER_SUPPORTED true
// Arm64 simulator on x64 on Linux, Mac, or Windows.
//