[compiler-rt][AArch64] Add a workaround for Exynos 9810
authorStephen Hines <srhines@google.com>
Wed, 15 Dec 2021 01:20:06 +0000 (17:20 -0800)
committerStephen Hines <srhines@google.com>
Wed, 15 Dec 2021 03:51:46 +0000 (19:51 -0800)
commitcce4a7258b81159e57a411896011ee2742f17def
treef3f9ca890a5b0319b320d1b18efe3ab90bc9b307
parent5255ca9726e9734eae5115488517175f9c94c9de
[compiler-rt][AArch64] Add a workaround for Exynos 9810

Big.LITTLE Heterogeneous architectures, as described by ARM [1],
require that the instruction set architecture of the big and little
cores be compatible. However, the Samsung Exynos 9810 is known to
have different ISAs in its core.
According to [2], some cores are ARMv8.2 and others are ARMv8.0.

Since LSE is for ARMv8.1 and later, it should be disabled
for this broken CPU.

[1] https://developer.arm.com/documentation/den0024/a/big-LITTLE-Technology
[2] https://github.com/golang/go/issues/28431

Patch by: Byoungchan Lee (byoungchan.lee@gmx.com)
Reviewed By: srhines

Differential Revision: https://reviews.llvm.org/D114523
compiler-rt/lib/builtins/cpu_model.c