summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Usama Arif <usama.arif@linaro.org> 2019-11-06 16:15:31 +0000
committer Treehugger Robot <treehugger-gerrit@google.com> 2019-11-20 09:18:26 +0000
commit142816a6ac2a9261d37cffb7a7367a96f712fde2 (patch)
treede5be36fdf80681d3ce517b095e9f2058918a498
parent986914bfd60c1cace9726e9029598d72cbf279e1 (diff)
ARM64: Pass simd half floating point feature to VIXL macroassembler.
VIXL requires NEONHalf CPUFeature to emit half floating points NEON instructions. Test: codegen_test Change-Id: I797d7a27087103491871e86d283f9860d3f20624
-rw-r--r--compiler/optimizing/codegen_test.cc2
-rw-r--r--compiler/utils/arm64/assembler_arm64.cc1
2 files changed, 3 insertions, 0 deletions
diff --git a/compiler/optimizing/codegen_test.cc b/compiler/optimizing/codegen_test.cc
index 26d07bd592..e562a8e34a 100644
--- a/compiler/optimizing/codegen_test.cc
+++ b/compiler/optimizing/codegen_test.cc
@@ -834,6 +834,7 @@ TEST_F(CodegenTest, ARM64IsaVIXLFeaturesA75) {
EXPECT_TRUE(features->Has(vixl::CPUFeatures::kCRC32));
EXPECT_TRUE(features->Has(vixl::CPUFeatures::kDotProduct));
EXPECT_TRUE(features->Has(vixl::CPUFeatures::kFPHalf));
+ EXPECT_TRUE(features->Has(vixl::CPUFeatures::kNEONHalf));
EXPECT_TRUE(features->Has(vixl::CPUFeatures::kAtomics));
}
@@ -847,6 +848,7 @@ TEST_F(CodegenTest, ARM64IsaVIXLFeaturesA53) {
EXPECT_TRUE(features->Has(vixl::CPUFeatures::kCRC32));
EXPECT_FALSE(features->Has(vixl::CPUFeatures::kDotProduct));
EXPECT_FALSE(features->Has(vixl::CPUFeatures::kFPHalf));
+ EXPECT_FALSE(features->Has(vixl::CPUFeatures::kNEONHalf));
EXPECT_FALSE(features->Has(vixl::CPUFeatures::kAtomics));
}
diff --git a/compiler/utils/arm64/assembler_arm64.cc b/compiler/utils/arm64/assembler_arm64.cc
index 0523797322..d722e00646 100644
--- a/compiler/utils/arm64/assembler_arm64.cc
+++ b/compiler/utils/arm64/assembler_arm64.cc
@@ -49,6 +49,7 @@ static void SetVIXLCPUFeaturesFromART(vixl::aarch64::MacroAssembler* vixl_masm_,
}
if (art_features->HasFP16()) {
features->Combine(vixl::CPUFeatures::kFPHalf);
+ features->Combine(vixl::CPUFeatures::kNEONHalf);
}
if (art_features->HasLSE()) {
features->Combine(vixl::CPUFeatures::kAtomics);