aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/xla/service/tuple_points_to_analysis.h
diff options
context:
space:
mode:
authorGravatar Jeremy Lau <lauj@google.com>2018-05-16 15:54:49 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-05-16 15:59:29 -0700
commit250415665dbd6ea200e8fc17e1c61eaf32312343 (patch)
treea1655b82ae0d54808c3c9a21e8838a1cbe602cc5 /tensorflow/compiler/xla/service/tuple_points_to_analysis.h
parent9fd3485db92d6bfee928dfaaba3dc69938bab8b6 (diff)
Move DoesNotUseOperandBuffer and CanShareOperandBufferWithUser from
liveness_util to methods on TuplePointsToAnalysis and HloDataflowAnalysis. PiperOrigin-RevId: 196903216
Diffstat (limited to 'tensorflow/compiler/xla/service/tuple_points_to_analysis.h')
-rw-r--r--tensorflow/compiler/xla/service/tuple_points_to_analysis.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/tensorflow/compiler/xla/service/tuple_points_to_analysis.h b/tensorflow/compiler/xla/service/tuple_points_to_analysis.h
index c3743b1501..1ac7130136 100644
--- a/tensorflow/compiler/xla/service/tuple_points_to_analysis.h
+++ b/tensorflow/compiler/xla/service/tuple_points_to_analysis.h
@@ -256,6 +256,23 @@ class TuplePointsToAnalysis : public DfsHloVisitorWithDefault {
string ToString() const;
+ // Returns true if 'user' cannot possibly use the buffer at 'index' in
+ // 'operand'. Returns false otherwise.
+ //
+ // REQUIRES: 'operand' is an operand of 'user'.
+ bool DoesNotUseOperandBuffer(const HloInstruction* operand,
+ const ShapeIndex& index,
+ const HloInstruction* user) const;
+
+ // Returns true if 'user' (at 'user_index') can share a buffer with its
+ // operand 'operand' (at 'operand_index'). Returns false otherwise.
+ //
+ // REQUIRES: 'operand' is an operand of 'user'.
+ bool CanShareOperandBufferWithUser(HloInstruction* operand,
+ const ShapeIndex& operand_index,
+ HloInstruction* user,
+ const ShapeIndex& user_index) const;
+
private:
explicit TuplePointsToAnalysis(
const HloModule* module,
@@ -310,6 +327,13 @@ class TuplePointsToAnalysis : public DfsHloVisitorWithDefault {
return &per_instruction_[id];
}
+ std::vector<std::pair<HloInstruction*, int64>> GetAllUsesOfInstructionAtIndex(
+ HloInstruction* instruction, const ShapeIndex& index) const;
+ bool HasUniqueFusedUseOfOperandAt(HloInstruction* operand,
+ const ShapeIndex& operand_index,
+ HloInstruction* fusion,
+ const int64 use_operand_index) const;
+
// The module this analysis is performed on.
const HloModule* module_;