diff options
| author | 2019-07-18 14:24:55 +0100 | |
|---|---|---|
| committer | 2020-05-04 08:19:17 +0000 | |
| commit | 1a719e4de83532a1dcd9ddfad2c92d4130f28ea9 (patch) | |
| tree | 445026effb3298ca8e962701ee01f65785be6fe6 /compiler/optimizing/nodes.h | |
| parent | e33dca6d44463606168330d2f84bc616e8c147f6 (diff) | |
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
Diffstat (limited to 'compiler/optimizing/nodes.h')
| -rw-r--r-- | compiler/optimizing/nodes.h | 10 |
1 files changed, 8 insertions, 2 deletions
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. */ |