summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_checker.h
diff options
context:
space:
mode:
author Artem Serov <artem.serov@linaro.org> 2020-02-24 18:51:42 +0000
committer Ulyana Trafimovich <skvadrik@google.com> 2020-06-09 13:11:45 +0000
commit077188411c692f82b0785597fee030810a2a5841 (patch)
treef74ced58d91dcb215601175dc7d29854d46aee0d /compiler/optimizing/graph_checker.h
parent1715efa0b46d57d587237829d1c0695aaca2c344 (diff)
ART: Introduce predicated vector instructions.
This CL introduces a minimal changes to the IR to support autovectorization with use of predicated execution of SIMD instructions (e.g. Arm SVE). Test: test-art-target, test-art-host. Change-Id: Ibb7c5520fec6b858fb29f0dde19ec65501831a3a
Diffstat (limited to 'compiler/optimizing/graph_checker.h')
-rw-r--r--compiler/optimizing/graph_checker.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/compiler/optimizing/graph_checker.h b/compiler/optimizing/graph_checker.h
index 564b1377ec..04c8d2103c 100644
--- a/compiler/optimizing/graph_checker.h
+++ b/compiler/optimizing/graph_checker.h
@@ -26,15 +26,20 @@
namespace art {
+class CodeGenerator;
+
// A control-flow graph visitor performing various checks.
class GraphChecker : public HGraphDelegateVisitor {
public:
- explicit GraphChecker(HGraph* graph, const char* dump_prefix = "art::GraphChecker: ")
+ explicit GraphChecker(HGraph* graph,
+ CodeGenerator* codegen = nullptr,
+ const char* dump_prefix = "art::GraphChecker: ")
: HGraphDelegateVisitor(graph),
errors_(graph->GetAllocator()->Adapter(kArenaAllocGraphChecker)),
dump_prefix_(dump_prefix),
allocator_(graph->GetArenaStack()),
- seen_ids_(&allocator_, graph->GetCurrentInstructionId(), false, kArenaAllocGraphChecker) {
+ seen_ids_(&allocator_, graph->GetCurrentInstructionId(), false, kArenaAllocGraphChecker),
+ codegen_(codegen) {
seen_ids_.ClearAllBits();
}
@@ -69,6 +74,8 @@ class GraphChecker : public HGraphDelegateVisitor {
void VisitTryBoundary(HTryBoundary* try_boundary) override;
void VisitTypeConversion(HTypeConversion* instruction) override;
+ void VisitVecOperation(HVecOperation* instruction) override;
+
void CheckTypeCheckBitstringInput(HTypeCheckInstruction* check,
size_t input_pos,
bool check_value,
@@ -125,6 +132,9 @@ class GraphChecker : public HGraphDelegateVisitor {
// The default value is true.
bool check_reference_type_info_ = true;
+ // Used to access target information.
+ CodeGenerator* codegen_;
+
DISALLOW_COPY_AND_ASSIGN(GraphChecker);
};