summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Krzysztof KosiƄski <krzysio@google.com> 2024-09-11 16:04:44 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-09-11 16:04:44 +0000
commit28b806c9eb56698c9484c1fb6071bd091c3aa20e (patch)
tree50c3213ce37bfd280683d2ceb2bfba5677ec2b55
parentf1d63b8b6d8496df8c6412aed3f948d8376bacac (diff)
parentb8c5e95e269261a78688770691327a51a1985702 (diff)
Merge "Add missing pieces of ARMv9.2-A support." into main
-rw-r--r--android/arch_list.go1
-rw-r--r--cc/config/arm64_device.go30
-rw-r--r--cc/config/arm64_linux_host.go4
3 files changed, 10 insertions, 25 deletions
diff --git a/android/arch_list.go b/android/arch_list.go
index 2937092af..9501c877c 100644
--- a/android/arch_list.go
+++ b/android/arch_list.go
@@ -26,6 +26,7 @@ var archVariants = map[ArchType][]string{
"armv8-2a",
"armv8-2a-dotprod",
"armv9-a",
+ "armv9-2a",
},
X86: {
"amberlake",
diff --git a/cc/config/arm64_device.go b/cc/config/arm64_device.go
index 761afcf18..0dcf2cfd4 100644
--- a/cc/config/arm64_device.go
+++ b/cc/config/arm64_device.go
@@ -118,11 +118,9 @@ func init() {
pctx.StaticVariable("Arm64Cppflags", strings.Join(arm64Cppflags, " "))
- pctx.StaticVariable("Arm64Armv8ACflags", strings.Join(arm64ArchVariantCflags["armv8-a"], " "))
- pctx.StaticVariable("Arm64Armv8ABranchProtCflags", strings.Join(arm64ArchVariantCflags["armv8-a-branchprot"], " "))
- pctx.StaticVariable("Arm64Armv82ACflags", strings.Join(arm64ArchVariantCflags["armv8-2a"], " "))
- pctx.StaticVariable("Arm64Armv82ADotprodCflags", strings.Join(arm64ArchVariantCflags["armv8-2a-dotprod"], " "))
- pctx.StaticVariable("Arm64Armv9ACflags", strings.Join(arm64ArchVariantCflags["armv9-a"], " "))
+ for variant, cflags := range arm64ArchVariantCflags {
+ pctx.StaticVariable("Arm64"+variant+"VariantCflags", strings.Join(cflags, " "))
+ }
pctx.StaticVariable("Arm64CortexA53Cflags", strings.Join(arm64CpuVariantCflags["cortex-a53"], " "))
pctx.StaticVariable("Arm64CortexA55Cflags", strings.Join(arm64CpuVariantCflags["cortex-a55"], " "))
@@ -134,14 +132,6 @@ func init() {
}
var (
- arm64ArchVariantCflagsVar = map[string]string{
- "armv8-a": "${config.Arm64Armv8ACflags}",
- "armv8-a-branchprot": "${config.Arm64Armv8ABranchProtCflags}",
- "armv8-2a": "${config.Arm64Armv82ACflags}",
- "armv8-2a-dotprod": "${config.Arm64Armv82ADotprodCflags}",
- "armv9-a": "${config.Arm64Armv9ACflags}",
- }
-
arm64CpuVariantCflagsVar = map[string]string{
"cortex-a53": "${config.Arm64CortexA53Cflags}",
"cortex-a55": "${config.Arm64CortexA55Cflags}",
@@ -211,18 +201,12 @@ func (toolchainArm64) LibclangRuntimeLibraryArch() string {
}
func arm64ToolchainFactory(arch android.Arch) Toolchain {
- switch arch.ArchVariant {
- case "armv8-a":
- case "armv8-a-branchprot":
- case "armv8-2a":
- case "armv8-2a-dotprod":
- case "armv9-a":
- // Nothing extra for armv8-a/armv8-2a
- default:
- panic(fmt.Sprintf("Unknown ARM architecture version: %q", arch.ArchVariant))
+ // Error now rather than having a confusing Ninja error
+ if _, ok := arm64ArchVariantCflags[arch.ArchVariant]; !ok {
+ panic(fmt.Sprintf("Unknown ARM64 architecture version: %q", arch.ArchVariant))
}
- toolchainCflags := []string{arm64ArchVariantCflagsVar[arch.ArchVariant]}
+ toolchainCflags := []string{"${config.Arm64" + arch.ArchVariant + "VariantCflags}"}
toolchainCflags = append(toolchainCflags,
variantOrDefault(arm64CpuVariantCflagsVar, arch.CpuVariant))
diff --git a/cc/config/arm64_linux_host.go b/cc/config/arm64_linux_host.go
index 438e0e6b6..a19b0ed92 100644
--- a/cc/config/arm64_linux_host.go
+++ b/cc/config/arm64_linux_host.go
@@ -87,8 +87,8 @@ func (toolchainLinuxBionicArm64) CrtBeginSharedBinary() []string {
}
func linuxBionicArm64ToolchainFactory(arch android.Arch) Toolchain {
- archVariant := "armv8-a" // for host, default to armv8-a
- toolchainCflags := []string{arm64ArchVariantCflagsVar[archVariant]}
+ // for host, default to armv8-a
+ toolchainCflags := []string{"-march=armv8-a"}
// We don't specify CPU architecture for host. Conservatively assume
// the host CPU needs the fix