Home | History | Annotate | Download | only in opt

Lines Matching refs:SENode

47   SENode* CreateNegation(SENode* operand);
51 SENode* CreateSubtraction(SENode* operand_1, SENode* operand_2);
56 SENode* CreateAddNode(SENode* operand_1, SENode* operand_2);
59 SENode* CreateMultiplyNode(SENode* operand_1, SENode* operand_2);
62 SENode* CreateConstant(int64_t integer);
65 SENode* CreateValueUnknownNode(const Instruction* inst);
68 SENode* CreateCantComputeNode();
72 SENode* CreateRecurrentExpression(const Loop* loop, SENode* offset,
73 SENode* coefficient);
76 SENode* AnalyzeInstruction(const Instruction* inst);
88 SENode* SimplifyExpression(SENode* node);
92 SENode* GetCachedOrAdd(std::unique_ptr<SENode> prospective_node);
95 bool IsLoopInvariant(const Loop* loop, const SENode* node) const;
100 bool IsAlwaysGreaterThanZero(SENode* node, bool* is_gt_zero) const;
104 bool IsAlwaysGreaterOrEqualToZero(SENode* node, bool* is_ge_zero) const;
110 SENode* GetCoefficientFromRecurrentTerm(SENode* node, const Loop* loop);
114 SENode* BuildGraphWithoutRecurrentTerm(SENode* node, const Loop* loop);
118 SERecurrentNode* GetRecurrentTerm(SENode* node, const Loop* loop);
120 SENode* UpdateChildNode(SENode* parent, SENode* child, SENode* new_child);
131 SENode* AnalyzeConstant(const Instruction* inst);
136 SENode* AnalyzeAddOp(const Instruction* instruction);
138 SENode* AnalyzeMultiplyOp(const Instruction* multiply);
140 SENode* AnalyzePhiInstruction(const Instruction* phi);
148 std::map<const Instruction*, SENode*> recurrent_node_map_;
152 SENode* cached_cant_compute_;
158 bool operator()(const std::unique_ptr<SENode>& lhs,
159 const std::unique_ptr<SENode>& rhs) const {
166 std::unordered_set<std::unique_ptr<SENode>, SENodeHash, NodePointersEquality>
174 // Wrapping class to manipulate SENode pointer using + - * / operators.
178 SExpression(SENode* node)
182 inline operator SENode*() const { return node_; }
183 inline SENode* operator->() const { return node_; }
184 const SENode& operator*() const { return *node_; }
190 inline SExpression operator+(SENode* rhs) const;
197 inline SExpression operator-(SENode* rhs) const;
203 inline SExpression operator*(SENode* rhs) const;
218 SENode* node_;
222 inline SExpression SExpression::operator+(SENode* rhs) const {
240 inline SExpression SExpression::operator-(SENode* rhs) const {
254 inline SExpression SExpression::operator*(SENode* rhs) const {
279 inline SExpression operator+(SENode* lhs, SExpression rhs) { return rhs + lhs; }
288 inline SExpression operator-(SENode* lhs, SExpression rhs) {
298 inline SExpression operator*(SENode* lhs, SExpression rhs) { return rhs * lhs; }
307 inline std::pair<SExpression, int64_t> operator/(SENode* lhs, SExpression rhs) {