From 55a6fed35ec2c8a234784726c16e8c19b2fd0434 Mon Sep 17 00:00:00 2001 From: Han-Chung Wang Date: Mon, 3 Feb 2025 09:17:57 -0800 Subject: [PATCH] [CPU] Add support for parsing AArch64 cpu features. (#19881) A step towards https://github.com/iree-org/iree/issues/19873 --------- Signed-off-by: hanhanW Signed-off-by: Hyunsung Lee --- .../plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/compiler/plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.cpp b/compiler/plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.cpp index 552b0b5621464..5850be4babba4 100644 --- a/compiler/plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.cpp +++ b/compiler/plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.cpp @@ -6,6 +6,7 @@ #include "compiler/plugins/target/LLVMCPU/ResolveCPUAndCPUFeatures.h" +#include "llvm/TargetParser/AArch64TargetParser.h" #include "llvm/TargetParser/Host.h" #include "llvm/TargetParser/RISCVTargetParser.h" #include "llvm/TargetParser/SubtargetFeature.h" @@ -61,6 +62,14 @@ resolveCPUFeaturesForCPU(const llvm::Triple &triple, std::string &cpu, } else if (triple.isRISCV64()) { llvm::SmallVector cpuFeatureList; addCpuFeatures(llvm::RISCV::getFeaturesForCPU, cpuFeatureList); + } else if (triple.isAArch64()) { + std::vector cpuFeatureList; + const llvm::AArch64::ArchInfo *cpuArch = llvm::AArch64::getArchForCpu(cpu); + llvm::AArch64::getExtensionFeatures(cpuArch->DefaultExts, cpuFeatureList); + targetCpuFeatures.AddFeature(cpuArch->ArchFeature); + for (const auto &feature : cpuFeatureList) { + targetCpuFeatures.AddFeature(feature); + } } else { return ResolveCPUAndCPUFeaturesStatus::UnimplementedMapping; }