From 1a719e4de83532a1dcd9ddfad2c92d4130f28ea9 Mon Sep 17 00:00:00 2001 From: Artem Serov Date: Thu, 18 Jul 2019 14:24:55 +0100 Subject: RFC: ARM64: Split arm64 codegen into scalar and vector (SVE and NEON). This is a first CL in the series of introducing arm64 SVE support in ART. The patch splits the codegen functionality into scalar and vector ones and for the latter introduces NEON and SVE implementations. SVE one currently is an exact copy of NEON one - for the sake of testing and an easy diff when the next CL comes with an actual SVE instructions support. The patch effectively doesn't change any behavior; NEON mode is used for vector instructions, tests pass. Test: test-art-target. Change-Id: I5f7f2c8218330998e5a733a56f42473526cd58e6 --- compiler/optimizing/nodes.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'compiler/optimizing/nodes.h') diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 342789348c..e02a393c1b 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -1387,7 +1387,7 @@ class HLoopInformationOutwardIterator : public ValueObject { DISALLOW_COPY_AND_ASSIGN(HLoopInformationOutwardIterator); }; -#define FOR_EACH_CONCRETE_INSTRUCTION_COMMON(M) \ +#define FOR_EACH_CONCRETE_INSTRUCTION_SCALAR_COMMON(M) \ M(Above, Condition) \ M(AboveOrEqual, Condition) \ M(Abs, UnaryOperation) \ @@ -1477,7 +1477,9 @@ class HLoopInformationOutwardIterator : public ValueObject { M(TryBoundary, Instruction) \ M(TypeConversion, Instruction) \ M(UShr, BinaryOperation) \ - M(Xor, BinaryOperation) \ + M(Xor, BinaryOperation) + +#define FOR_EACH_CONCRETE_INSTRUCTION_VECTOR_COMMON(M) \ M(VecReplicateScalar, VecUnaryOperation) \ M(VecExtractScalar, VecUnaryOperation) \ M(VecReduce, VecUnaryOperation) \ @@ -1508,6 +1510,10 @@ class HLoopInformationOutwardIterator : public ValueObject { M(VecLoad, VecMemoryOperation) \ M(VecStore, VecMemoryOperation) \ +#define FOR_EACH_CONCRETE_INSTRUCTION_COMMON(M) \ + FOR_EACH_CONCRETE_INSTRUCTION_SCALAR_COMMON(M) \ + FOR_EACH_CONCRETE_INSTRUCTION_VECTOR_COMMON(M) + /* * Instructions, shared across several (not all) architectures. */ -- cgit v1.2.3-59-g8ed1b