Lines Matching full:kind

28 static ExpArity getExpArity(TensorExp::Kind k) {  in getExpArity()
31 case TensorExp::Kind::kTensor: in getExpArity()
32 case TensorExp::Kind::kInvariant: in getExpArity()
33 case TensorExp::Kind::kLoopVar: in getExpArity()
34 case TensorExp::Kind::kSynZero: in getExpArity()
36 case TensorExp::Kind::kAbsF: in getExpArity()
37 case TensorExp::Kind::kAbsC: in getExpArity()
38 case TensorExp::Kind::kAbsI: in getExpArity()
39 case TensorExp::Kind::kCeilF: in getExpArity()
40 case TensorExp::Kind::kFloorF: in getExpArity()
41 case TensorExp::Kind::kSqrtF: in getExpArity()
42 case TensorExp::Kind::kSqrtC: in getExpArity()
43 case TensorExp::Kind::kExpm1F: in getExpArity()
44 case TensorExp::Kind::kExpm1C: in getExpArity()
45 case TensorExp::Kind::kLog1pF: in getExpArity()
46 case TensorExp::Kind::kLog1pC: in getExpArity()
47 case TensorExp::Kind::kRelu: in getExpArity()
48 case TensorExp::Kind::kSinF: in getExpArity()
49 case TensorExp::Kind::kSinC: in getExpArity()
50 case TensorExp::Kind::kTanhF: in getExpArity()
51 case TensorExp::Kind::kTanhC: in getExpArity()
52 case TensorExp::Kind::kTruncF: in getExpArity()
53 case TensorExp::Kind::kExtF: in getExpArity()
54 case TensorExp::Kind::kCastFS: in getExpArity()
55 case TensorExp::Kind::kCastFU: in getExpArity()
56 case TensorExp::Kind::kCastSF: in getExpArity()
57 case TensorExp::Kind::kCastUF: in getExpArity()
58 case TensorExp::Kind::kCastS: in getExpArity()
59 case TensorExp::Kind::kCastU: in getExpArity()
60 case TensorExp::Kind::kCastIdx: in getExpArity()
61 case TensorExp::Kind::kTruncI: in getExpArity()
62 case TensorExp::Kind::kCIm: in getExpArity()
63 case TensorExp::Kind::kCRe: in getExpArity()
64 case TensorExp::Kind::kBitCast: in getExpArity()
65 case TensorExp::Kind::kBinaryBranch: in getExpArity()
66 case TensorExp::Kind::kUnary: in getExpArity()
67 case TensorExp::Kind::kSelect: in getExpArity()
68 case TensorExp::Kind::kNegF: in getExpArity()
69 case TensorExp::Kind::kNegC: in getExpArity()
70 case TensorExp::Kind::kNegI: in getExpArity()
73 case TensorExp::Kind::kDivF: in getExpArity()
74 case TensorExp::Kind::kDivC: in getExpArity()
75 case TensorExp::Kind::kDivS: in getExpArity()
76 case TensorExp::Kind::kDivU: in getExpArity()
77 case TensorExp::Kind::kShrS: in getExpArity()
78 case TensorExp::Kind::kShrU: in getExpArity()
79 case TensorExp::Kind::kShlI: in getExpArity()
80 case TensorExp::Kind::kMulF: in getExpArity()
81 case TensorExp::Kind::kMulC: in getExpArity()
82 case TensorExp::Kind::kMulI: in getExpArity()
83 case TensorExp::Kind::kAndI: in getExpArity()
84 case TensorExp::Kind::kAddF: in getExpArity()
85 case TensorExp::Kind::kAddC: in getExpArity()
86 case TensorExp::Kind::kAddI: in getExpArity()
87 case TensorExp::Kind::kOrI: in getExpArity()
88 case TensorExp::Kind::kXorI: in getExpArity()
89 case TensorExp::Kind::kBinary: in getExpArity()
90 case TensorExp::Kind::kReduce: in getExpArity()
91 case TensorExp::Kind::kSubF: in getExpArity()
92 case TensorExp::Kind::kSubC: in getExpArity()
93 case TensorExp::Kind::kSubI: in getExpArity()
94 case TensorExp::Kind::kCmpF: in getExpArity()
95 case TensorExp::Kind::kCmpI: in getExpArity()
96 case TensorExp::Kind::kDenseOp: // kDenseOp can *at most* have two operands in getExpArity()
99 llvm_unreachable("unexpected kind"); in getExpArity()
106 TensorExp::TensorExp(TensorExp::Kind k, unsigned x, ExprId y, Value v, in TensorExp()
108 : kind(k), val(v), op(o), attr(a) { in TensorExp()
109 switch (kind) { in TensorExp()
111 case TensorExp::Kind::kTensor: in TensorExp()
115 case TensorExp::Kind::kSynZero: in TensorExp()
118 case TensorExp::Kind::kInvariant: in TensorExp()
121 case TensorExp::Kind::kLoopVar: in TensorExp()
126 case TensorExp::Kind::kAbsF: in TensorExp()
127 case TensorExp::Kind::kAbsC: in TensorExp()
128 case TensorExp::Kind::kAbsI: in TensorExp()
129 case TensorExp::Kind::kCeilF: in TensorExp()
130 case TensorExp::Kind::kFloorF: in TensorExp()
131 case TensorExp::Kind::kSqrtF: in TensorExp()
132 case TensorExp::Kind::kSqrtC: in TensorExp()
133 case TensorExp::Kind::kExpm1F: in TensorExp()
134 case TensorExp::Kind::kExpm1C: in TensorExp()
135 case TensorExp::Kind::kLog1pF: in TensorExp()
136 case TensorExp::Kind::kLog1pC: in TensorExp()
137 case TensorExp::Kind::kRelu: in TensorExp()
138 case TensorExp::Kind::kSinF: in TensorExp()
139 case TensorExp::Kind::kSinC: in TensorExp()
140 case TensorExp::Kind::kTanhF: in TensorExp()
141 case TensorExp::Kind::kTanhC: in TensorExp()
142 case TensorExp::Kind::kNegF: in TensorExp()
143 case TensorExp::Kind::kNegC: in TensorExp()
144 case TensorExp::Kind::kNegI: in TensorExp()
145 case TensorExp::Kind::kCIm: in TensorExp()
146 case TensorExp::Kind::kCRe: in TensorExp()
151 case TensorExp::Kind::kTruncF: in TensorExp()
152 case TensorExp::Kind::kExtF: in TensorExp()
153 case TensorExp::Kind::kCastFS: in TensorExp()
154 case TensorExp::Kind::kCastFU: in TensorExp()
155 case TensorExp::Kind::kCastSF: in TensorExp()
156 case TensorExp::Kind::kCastUF: in TensorExp()
157 case TensorExp::Kind::kCastS: in TensorExp()
158 case TensorExp::Kind::kCastU: in TensorExp()
159 case TensorExp::Kind::kCastIdx: in TensorExp()
160 case TensorExp::Kind::kTruncI: in TensorExp()
161 case TensorExp::Kind::kBitCast: in TensorExp()
166 case TensorExp::Kind::kBinaryBranch: in TensorExp()
167 case TensorExp::Kind::kSelect: in TensorExp()
172 case TensorExp::Kind::kUnary: in TensorExp()
180 case TensorExp::Kind::kMulF: in TensorExp()
181 case TensorExp::Kind::kMulC: in TensorExp()
182 case TensorExp::Kind::kMulI: in TensorExp()
183 case TensorExp::Kind::kDivF: in TensorExp()
184 case TensorExp::Kind::kDivC: in TensorExp()
185 case TensorExp::Kind::kDivS: in TensorExp()
186 case TensorExp::Kind::kDivU: in TensorExp()
187 case TensorExp::Kind::kAddF: in TensorExp()
188 case TensorExp::Kind::kAddC: in TensorExp()
189 case TensorExp::Kind::kAddI: in TensorExp()
190 case TensorExp::Kind::kSubF: in TensorExp()
191 case TensorExp::Kind::kSubC: in TensorExp()
192 case TensorExp::Kind::kSubI: in TensorExp()
193 case TensorExp::Kind::kAndI: in TensorExp()
194 case TensorExp::Kind::kOrI: in TensorExp()
195 case TensorExp::Kind::kXorI: in TensorExp()
196 case TensorExp::Kind::kShrS: in TensorExp()
197 case TensorExp::Kind::kShrU: in TensorExp()
198 case TensorExp::Kind::kShlI: in TensorExp()
203 case TensorExp::Kind::kCmpF: in TensorExp()
204 case TensorExp::Kind::kCmpI: in TensorExp()
209 case TensorExp::Kind::kBinary: in TensorExp()
210 case TensorExp::Kind::kReduce: in TensorExp()
215 case TensorExp::Kind::kDenseOp: in TensorExp()
221 llvm_unreachable("unexpected kind"); in TensorExp()
250 tensorExps.emplace_back(TensorExp::Kind::kTensor, t, detail::kInvalidId, in addTensorExp()
258 tensorExps.emplace_back(TensorExp::Kind::kLoopVar, i, detail::kInvalidId, in addLoopVarExp()
265 tensorExps.emplace_back(TensorExp::Kind::kInvariant, detail::kInvalidId, in addInvariantExp()
272 tensorExps.emplace_back(TensorExp::Kind::kSynZero, detail::kInvalidId, in addSynZeroExp()
277 ExprId Merger::addExp(TensorExp::Kind k, ExprId e0, ExprId e1, Operation *op, in addExp()
279 assert(k > TensorExp::Kind::kLoopVar); in addExp()
285 ExprId Merger::addExp(TensorExp::Kind k, ExprId e, Value v, Operation *op, in addExp()
287 assert(k > TensorExp::Kind::kLoopVar); in addExp()
317 TensorExp::Kind kind = exp(e).kind; in conjLat() local
324 const ExprId ne = addExp(kind, point0.exp, point1.exp, op, attr); in conjLat()
340 TensorExp::Kind kind = exp(e).kind; in disjSet() local
345 if (kind == TensorExp::Kind::kSubF) in disjSet()
346 s1 = mapSet(TensorExp::Kind::kNegF, s1); in disjSet()
347 else if (kind == TensorExp::Kind::kSubC) in disjSet()
348 s1 = mapSet(TensorExp::Kind::kNegC, s1); in disjSet()
349 else if (kind == TensorExp::Kind::kSubI) in disjSet()
350 s1 = mapSet(TensorExp::Kind::kNegI, s1); in disjSet()
357 assert(exp(e).kind == TensorExp::Kind::kCmpI || in disjSetWithZero()
358 exp(e).kind == TensorExp::Kind::kCmpF); in disjSetWithZero()
363 if (exp(e0).kind == TensorExp::Kind::kSynZero || in disjSetWithZero()
364 exp(e1).kind == TensorExp::Kind::kSynZero) { in disjSetWithZero()
366 assert(exp(e0).kind != exp(e1).kind); in disjSetWithZero()
381 bool includeLeft, TensorExp::Kind ltrans, in combiSet()
383 TensorExp::Kind rtrans, Operation *opright) { in combiSet()
401 LatSetId Merger::mapSet(TensorExp::Kind kind, LatSetId s0, Value v, in mapSet() argument
403 assert((TensorExp::Kind::kAbsF <= kind && kind <= TensorExp::Kind::kSelect) || in mapSet()
404 TensorExp::Kind::kDenseOp == kind); in mapSet()
409 setNew.push_back(addLat(point.bits, addExp(kind, point.exp, v, op, a))); in mapSet()
415 TensorExp::Kind kind = exp(e).kind; in mapBinWithSynZeroSet() local
417 assert(TensorExp::Kind::kMulF <= kind && kind <= TensorExp::Kind::kShlI); in mapBinWithSynZeroSet()
424 ExprId newExp = lhsZero ? addExp(kind, zeroExp, point.exp, nullptr, a) in mapBinWithSynZeroSet()
425 : addExp(kind, point.exp, zeroExp, nullptr, a); in mapBinWithSynZeroSet()
525 if (expr.kind == TensorExp::Kind::kTensor) in expContainsTensor()
528 switch (getExpArity(expr.kind)) { in expContainsTensor()
546 switch (expr.kind) { in hasNegateOnOut()
547 case TensorExp::Kind::kNegF: in hasNegateOnOut()
548 case TensorExp::Kind::kNegC: in hasNegateOnOut()
549 case TensorExp::Kind::kNegI: in hasNegateOnOut()
551 case TensorExp::Kind::kSubF: in hasNegateOnOut()
552 case TensorExp::Kind::kSubC: in hasNegateOnOut()
553 case TensorExp::Kind::kSubI: in hasNegateOnOut()
556 case TensorExp::Kind::kDenseOp: { in hasNegateOnOut()
563 switch (getExpArity(expr.kind)) { in hasNegateOnOut()
574 llvm_unreachable("unexpected kind"); in hasNegateOnOut()
580 switch (expr.kind) { in isSingleCondition()
582 case TensorExp::Kind::kTensor: in isSingleCondition()
584 case TensorExp::Kind::kInvariant: in isSingleCondition()
585 case TensorExp::Kind::kLoopVar: in isSingleCondition()
586 case TensorExp::Kind::kSynZero: in isSingleCondition()
589 case TensorExp::Kind::kAbsF: in isSingleCondition()
590 case TensorExp::Kind::kAbsC: in isSingleCondition()
591 case TensorExp::Kind::kAbsI: in isSingleCondition()
592 case TensorExp::Kind::kCeilF: in isSingleCondition()
593 case TensorExp::Kind::kFloorF: in isSingleCondition()
594 case TensorExp::Kind::kSqrtF: in isSingleCondition()
595 case TensorExp::Kind::kSqrtC: in isSingleCondition()
596 case TensorExp::Kind::kExpm1F: in isSingleCondition()
597 case TensorExp::Kind::kExpm1C: in isSingleCondition()
598 case TensorExp::Kind::kLog1pF: in isSingleCondition()
599 case TensorExp::Kind::kLog1pC: in isSingleCondition()
600 case TensorExp::Kind::kRelu: in isSingleCondition()
601 case TensorExp::Kind::kSinF: in isSingleCondition()
602 case TensorExp::Kind::kSinC: in isSingleCondition()
603 case TensorExp::Kind::kTanhF: in isSingleCondition()
604 case TensorExp::Kind::kTanhC: in isSingleCondition()
605 case TensorExp::Kind::kNegF: in isSingleCondition()
606 case TensorExp::Kind::kNegC: in isSingleCondition()
607 case TensorExp::Kind::kNegI: in isSingleCondition()
608 case TensorExp::Kind::kTruncF: in isSingleCondition()
609 case TensorExp::Kind::kExtF: in isSingleCondition()
610 case TensorExp::Kind::kCastFS: in isSingleCondition()
611 case TensorExp::Kind::kCastFU: in isSingleCondition()
612 case TensorExp::Kind::kCastSF: in isSingleCondition()
613 case TensorExp::Kind::kCastUF: in isSingleCondition()
614 case TensorExp::Kind::kCastS: in isSingleCondition()
615 case TensorExp::Kind::kCastU: in isSingleCondition()
616 case TensorExp::Kind::kCastIdx: in isSingleCondition()
617 case TensorExp::Kind::kTruncI: in isSingleCondition()
618 case TensorExp::Kind::kCIm: in isSingleCondition()
619 case TensorExp::Kind::kCRe: in isSingleCondition()
620 case TensorExp::Kind::kBitCast: in isSingleCondition()
621 case TensorExp::Kind::kUnary: in isSingleCondition()
623 case TensorExp::Kind::kBinaryBranch: in isSingleCondition()
624 case TensorExp::Kind::kSelect: in isSingleCondition()
627 case TensorExp::Kind::kDivF: // note: x / c only in isSingleCondition()
628 case TensorExp::Kind::kDivC: in isSingleCondition()
629 case TensorExp::Kind::kDivS: in isSingleCondition()
630 case TensorExp::Kind::kDivU: in isSingleCondition()
633 case TensorExp::Kind::kShrS: // note: x >> inv only in isSingleCondition()
634 case TensorExp::Kind::kShrU: in isSingleCondition()
635 case TensorExp::Kind::kShlI: in isSingleCondition()
638 case TensorExp::Kind::kMulF: in isSingleCondition()
639 case TensorExp::Kind::kMulC: in isSingleCondition()
640 case TensorExp::Kind::kMulI: in isSingleCondition()
641 case TensorExp::Kind::kAndI: in isSingleCondition()
642 case TensorExp::Kind::kReduce: in isSingleCondition()
649 case TensorExp::Kind::kAddF: in isSingleCondition()
650 case TensorExp::Kind::kAddC: in isSingleCondition()
651 case TensorExp::Kind::kAddI: in isSingleCondition()
654 case TensorExp::Kind::kSubF: in isSingleCondition()
655 case TensorExp::Kind::kSubC: in isSingleCondition()
656 case TensorExp::Kind::kSubI: in isSingleCondition()
657 case TensorExp::Kind::kOrI: in isSingleCondition()
658 case TensorExp::Kind::kXorI: in isSingleCondition()
659 case TensorExp::Kind::kCmpF: in isSingleCondition()
660 case TensorExp::Kind::kCmpI: in isSingleCondition()
661 case TensorExp::Kind::kBinary: in isSingleCondition()
663 case TensorExp::Kind::kDenseOp: in isSingleCondition()
668 llvm_unreachable("unexpected kind"); in isSingleCondition()
693 static const char *kindToOpSymbol(TensorExp::Kind kind) { in kindToOpSymbol() argument
694 switch (kind) { in kindToOpSymbol()
696 case TensorExp::Kind::kTensor: in kindToOpSymbol()
698 case TensorExp::Kind::kInvariant: in kindToOpSymbol()
700 case TensorExp::Kind::kLoopVar: in kindToOpSymbol()
702 case TensorExp::Kind::kSynZero: in kindToOpSymbol()
705 case TensorExp::Kind::kAbsF: in kindToOpSymbol()
706 case TensorExp::Kind::kAbsC: in kindToOpSymbol()
707 case TensorExp::Kind::kAbsI: in kindToOpSymbol()
709 case TensorExp::Kind::kCeilF: in kindToOpSymbol()
711 case TensorExp::Kind::kFloorF: in kindToOpSymbol()
713 case TensorExp::Kind::kSqrtF: in kindToOpSymbol()
714 case TensorExp::Kind::kSqrtC: in kindToOpSymbol()
716 case TensorExp::Kind::kExpm1F: in kindToOpSymbol()
717 case TensorExp::Kind::kExpm1C: in kindToOpSymbol()
719 case TensorExp::Kind::kLog1pF: in kindToOpSymbol()
720 case TensorExp::Kind::kLog1pC: in kindToOpSymbol()
722 case TensorExp::Kind::kRelu: in kindToOpSymbol()
724 case TensorExp::Kind::kSinF: in kindToOpSymbol()
725 case TensorExp::Kind::kSinC: in kindToOpSymbol()
727 case TensorExp::Kind::kTanhF: in kindToOpSymbol()
728 case TensorExp::Kind::kTanhC: in kindToOpSymbol()
730 case TensorExp::Kind::kNegF: in kindToOpSymbol()
731 case TensorExp::Kind::kNegC: in kindToOpSymbol()
732 case TensorExp::Kind::kNegI: in kindToOpSymbol()
734 case TensorExp::Kind::kTruncF: in kindToOpSymbol()
735 case TensorExp::Kind::kExtF: in kindToOpSymbol()
736 case TensorExp::Kind::kCastFS: in kindToOpSymbol()
737 case TensorExp::Kind::kCastFU: in kindToOpSymbol()
738 case TensorExp::Kind::kCastSF: in kindToOpSymbol()
739 case TensorExp::Kind::kCastUF: in kindToOpSymbol()
740 case TensorExp::Kind::kCastS: in kindToOpSymbol()
741 case TensorExp::Kind::kCastU: in kindToOpSymbol()
742 case TensorExp::Kind::kCastIdx: in kindToOpSymbol()
743 case TensorExp::Kind::kTruncI: in kindToOpSymbol()
744 case TensorExp::Kind::kCIm: in kindToOpSymbol()
746 case TensorExp::Kind::kCRe: in kindToOpSymbol()
748 case TensorExp::Kind::kBitCast: in kindToOpSymbol()
750 case TensorExp::Kind::kBinaryBranch: in kindToOpSymbol()
752 case TensorExp::Kind::kUnary: in kindToOpSymbol()
754 case TensorExp::Kind::kSelect: in kindToOpSymbol()
757 case TensorExp::Kind::kMulF: in kindToOpSymbol()
758 case TensorExp::Kind::kMulC: in kindToOpSymbol()
759 case TensorExp::Kind::kMulI: in kindToOpSymbol()
761 case TensorExp::Kind::kDivF: in kindToOpSymbol()
762 case TensorExp::Kind::kDivC: in kindToOpSymbol()
763 case TensorExp::Kind::kDivS: in kindToOpSymbol()
764 case TensorExp::Kind::kDivU: in kindToOpSymbol()
766 case TensorExp::Kind::kAddF: in kindToOpSymbol()
767 case TensorExp::Kind::kAddC: in kindToOpSymbol()
768 case TensorExp::Kind::kAddI: in kindToOpSymbol()
770 case TensorExp::Kind::kSubF: in kindToOpSymbol()
771 case TensorExp::Kind::kSubC: in kindToOpSymbol()
772 case TensorExp::Kind::kSubI: in kindToOpSymbol()
774 case TensorExp::Kind::kAndI: in kindToOpSymbol()
776 case TensorExp::Kind::kOrI: in kindToOpSymbol()
778 case TensorExp::Kind::kXorI: in kindToOpSymbol()
780 case TensorExp::Kind::kShrS: in kindToOpSymbol()
782 case TensorExp::Kind::kShrU: in kindToOpSymbol()
784 case TensorExp::Kind::kShlI: in kindToOpSymbol()
786 case TensorExp::Kind::kCmpF: in kindToOpSymbol()
787 case TensorExp::Kind::kCmpI: in kindToOpSymbol()
789 case TensorExp::Kind::kBinary: in kindToOpSymbol()
791 case TensorExp::Kind::kReduce: in kindToOpSymbol()
793 case TensorExp::Kind::kDenseOp: in kindToOpSymbol()
796 llvm_unreachable("unexpected kind for symbol"); in kindToOpSymbol()
801 switch (expr.kind) { in dumpExp()
803 case TensorExp::Kind::kTensor: in dumpExp()
810 case TensorExp::Kind::kInvariant: in dumpExp()
813 case TensorExp::Kind::kSynZero: in dumpExp()
816 case TensorExp::Kind::kLoopVar: in dumpExp()
820 case TensorExp::Kind::kAbsF: in dumpExp()
821 case TensorExp::Kind::kAbsC: in dumpExp()
822 case TensorExp::Kind::kAbsI: in dumpExp()
823 case TensorExp::Kind::kCeilF: in dumpExp()
824 case TensorExp::Kind::kFloorF: in dumpExp()
825 case TensorExp::Kind::kSqrtF: in dumpExp()
826 case TensorExp::Kind::kSqrtC: in dumpExp()
827 case TensorExp::Kind::kExpm1F: in dumpExp()
828 case TensorExp::Kind::kExpm1C: in dumpExp()
829 case TensorExp::Kind::kLog1pF: in dumpExp()
830 case TensorExp::Kind::kLog1pC: in dumpExp()
831 case TensorExp::Kind::kRelu: in dumpExp()
832 case TensorExp::Kind::kSinF: in dumpExp()
833 case TensorExp::Kind::kSinC: in dumpExp()
834 case TensorExp::Kind::kTanhF: in dumpExp()
835 case TensorExp::Kind::kTanhC: in dumpExp()
836 case TensorExp::Kind::kNegF: in dumpExp()
837 case TensorExp::Kind::kNegC: in dumpExp()
838 case TensorExp::Kind::kNegI: in dumpExp()
839 case TensorExp::Kind::kTruncF: in dumpExp()
840 case TensorExp::Kind::kExtF: in dumpExp()
841 case TensorExp::Kind::kCastFS: in dumpExp()
842 case TensorExp::Kind::kCastFU: in dumpExp()
843 case TensorExp::Kind::kCastSF: in dumpExp()
844 case TensorExp::Kind::kCastUF: in dumpExp()
845 case TensorExp::Kind::kCastS: in dumpExp()
846 case TensorExp::Kind::kCastU: in dumpExp()
847 case TensorExp::Kind::kCastIdx: in dumpExp()
848 case TensorExp::Kind::kTruncI: in dumpExp()
849 case TensorExp::Kind::kCIm: in dumpExp()
850 case TensorExp::Kind::kCRe: in dumpExp()
851 case TensorExp::Kind::kBitCast: in dumpExp()
852 case TensorExp::Kind::kBinaryBranch: in dumpExp()
853 case TensorExp::Kind::kUnary: in dumpExp()
854 case TensorExp::Kind::kSelect: in dumpExp()
855 llvm::dbgs() << kindToOpSymbol(expr.kind) << " "; in dumpExp()
859 case TensorExp::Kind::kMulF: in dumpExp()
860 case TensorExp::Kind::kMulC: in dumpExp()
861 case TensorExp::Kind::kMulI: in dumpExp()
862 case TensorExp::Kind::kDivF: in dumpExp()
863 case TensorExp::Kind::kDivC: in dumpExp()
864 case TensorExp::Kind::kDivS: in dumpExp()
865 case TensorExp::Kind::kDivU: in dumpExp()
866 case TensorExp::Kind::kAddF: in dumpExp()
867 case TensorExp::Kind::kAddC: in dumpExp()
868 case TensorExp::Kind::kAddI: in dumpExp()
869 case TensorExp::Kind::kSubF: in dumpExp()
870 case TensorExp::Kind::kSubC: in dumpExp()
871 case TensorExp::Kind::kSubI: in dumpExp()
872 case TensorExp::Kind::kAndI: in dumpExp()
873 case TensorExp::Kind::kOrI: in dumpExp()
874 case TensorExp::Kind::kXorI: in dumpExp()
875 case TensorExp::Kind::kShrS: in dumpExp()
876 case TensorExp::Kind::kShrU: in dumpExp()
877 case TensorExp::Kind::kShlI: in dumpExp()
878 case TensorExp::Kind::kCmpF: in dumpExp()
879 case TensorExp::Kind::kCmpI: in dumpExp()
880 case TensorExp::Kind::kBinary: in dumpExp()
881 case TensorExp::Kind::kReduce: in dumpExp()
882 case TensorExp::Kind::kDenseOp: in dumpExp()
885 llvm::dbgs() << " " << kindToOpSymbol(expr.kind); in dumpExp()
893 assert(expr.kind == TensorExp::Kind::kDenseOp); in dumpExp()
946 const TensorExp::Kind kind = expr.kind; in buildLattices() local
947 switch (kind) { in buildLattices()
949 case TensorExp::Kind::kTensor: in buildLattices()
950 case TensorExp::Kind::kInvariant: in buildLattices()
951 case TensorExp::Kind::kSynZero: in buildLattices()
952 case TensorExp::Kind::kLoopVar: { in buildLattices()
960 if (kind == TensorExp::Kind::kTensor) { in buildLattices()
969 case TensorExp::Kind::kAbsF: in buildLattices()
970 case TensorExp::Kind::kAbsC: in buildLattices()
971 case TensorExp::Kind::kAbsI: in buildLattices()
972 case TensorExp::Kind::kCeilF: in buildLattices()
973 case TensorExp::Kind::kFloorF: in buildLattices()
974 case TensorExp::Kind::kSqrtF: in buildLattices()
975 case TensorExp::Kind::kSqrtC: in buildLattices()
976 case TensorExp::Kind::kExpm1F: in buildLattices()
977 case TensorExp::Kind::kExpm1C: in buildLattices()
978 case TensorExp::Kind::kLog1pF: in buildLattices()
979 case TensorExp::Kind::kLog1pC: in buildLattices()
980 case TensorExp::Kind::kRelu: in buildLattices()
981 case TensorExp::Kind::kSinF: in buildLattices()
982 case TensorExp::Kind::kSinC: in buildLattices()
983 case TensorExp::Kind::kTanhF: in buildLattices()
984 case TensorExp::Kind::kTanhC: in buildLattices()
985 case TensorExp::Kind::kNegF: in buildLattices()
986 case TensorExp::Kind::kNegC: in buildLattices()
987 case TensorExp::Kind::kNegI: in buildLattices()
988 case TensorExp::Kind::kTruncF: in buildLattices()
989 case TensorExp::Kind::kExtF: in buildLattices()
990 case TensorExp::Kind::kCastFS: in buildLattices()
991 case TensorExp::Kind::kCastFU: in buildLattices()
992 case TensorExp::Kind::kCastSF: in buildLattices()
993 case TensorExp::Kind::kCastUF: in buildLattices()
994 case TensorExp::Kind::kCastS: in buildLattices()
995 case TensorExp::Kind::kCastU: in buildLattices()
996 case TensorExp::Kind::kCastIdx: in buildLattices()
997 case TensorExp::Kind::kTruncI: in buildLattices()
998 case TensorExp::Kind::kCIm: in buildLattices()
999 case TensorExp::Kind::kCRe: in buildLattices()
1000 case TensorExp::Kind::kBitCast: in buildLattices()
1011 return mapSet(kind, buildLattices(e0, i), v, nullptr, a); in buildLattices()
1013 case TensorExp::Kind::kBinaryBranch: in buildLattices()
1014 case TensorExp::Kind::kSelect: in buildLattices()
1020 return mapSet(kind, buildLattices(e0, i), Value(), op); in buildLattices()
1022 case TensorExp::Kind::kUnary: in buildLattices()
1035 return mapSet(kind, child0, Value(), unop); in buildLattices()
1046 case TensorExp::Kind::kMulF: in buildLattices()
1047 case TensorExp::Kind::kMulC: in buildLattices()
1048 case TensorExp::Kind::kMulI: in buildLattices()
1049 case TensorExp::Kind::kAndI: in buildLattices()
1064 case TensorExp::Kind::kDivF: in buildLattices()
1065 case TensorExp::Kind::kDivC: in buildLattices()
1066 case TensorExp::Kind::kDivS: in buildLattices()
1067 case TensorExp::Kind::kDivU: in buildLattices()
1087 case TensorExp::Kind::kAddF: in buildLattices()
1088 case TensorExp::Kind::kAddC: in buildLattices()
1089 case TensorExp::Kind::kAddI: in buildLattices()
1090 case TensorExp::Kind::kSubF: in buildLattices()
1091 case TensorExp::Kind::kSubC: in buildLattices()
1092 case TensorExp::Kind::kSubI: in buildLattices()
1093 case TensorExp::Kind::kOrI: in buildLattices()
1094 case TensorExp::Kind::kXorI: in buildLattices()
1107 case TensorExp::Kind::kCmpF: in buildLattices()
1108 case TensorExp::Kind::kCmpI: in buildLattices()
1121 case TensorExp::Kind::kShrS: in buildLattices()
1122 case TensorExp::Kind::kShrU: in buildLattices()
1123 case TensorExp::Kind::kShlI: in buildLattices()
1133 case TensorExp::Kind::kBinary: in buildLattices()
1163 TensorExp::Kind::kBinaryBranch, leftYield, includeRight, in buildLattices()
1164 TensorExp::Kind::kBinaryBranch, rightYield); in buildLattices()
1166 case TensorExp::Kind::kReduce: in buildLattices()
1174 case TensorExp::Kind::kDenseOp: { in buildLattices()
1181 return mapSet(kind, buildLattices(e0, i), Value(), op); in buildLattices()
1190 llvm_unreachable("unexpected expression kind"); in buildLattices()
1217 if (expr.kind == TensorExp::Kind::kInvariant) { in maybeZero()
1274 static bool isGreater(TensorExp::Kind kind, Attribute attr) { in isGreater() argument
1275 if (kind == TensorExp::Kind::kCmpI) { in isGreater()
1280 if (kind == TensorExp::Kind::kCmpF) { in isGreater()
1324 return {addExp(TensorExp::Kind::kAbsF, e), hasSpDep}; in buildTensorExp()
1326 return {addExp(TensorExp::Kind::kAbsC, e), hasSpDep}; in buildTensorExp()
1328 return {addExp(TensorExp::Kind::kAbsI, e), hasSpDep}; in buildTensorExp()
1330 return {addExp(TensorExp::Kind::kCeilF, e), hasSpDep}; in buildTensorExp()
1332 return {addExp(TensorExp::Kind::kFloorF, e), hasSpDep}; in buildTensorExp()
1334 return {addExp(TensorExp::Kind::kSqrtF, e), hasSpDep}; in buildTensorExp()
1336 return {addExp(TensorExp::Kind::kSqrtC, e), hasSpDep}; in buildTensorExp()
1338 return {addExp(TensorExp::Kind::kExpm1F, e), hasSpDep}; in buildTensorExp()
1340 return {addExp(TensorExp::Kind::kExpm1C, e), hasSpDep}; in buildTensorExp()
1342 return {addExp(TensorExp::Kind::kLog1pF, e), hasSpDep}; in buildTensorExp()
1344 return {addExp(TensorExp::Kind::kLog1pC, e), hasSpDep}; in buildTensorExp()
1346 return {addExp(TensorExp::Kind::kSinF, e), hasSpDep}; in buildTensorExp()
1348 return {addExp(TensorExp::Kind::kSinC, e), hasSpDep}; in buildTensorExp()
1350 return {addExp(TensorExp::Kind::kTanhF, e), hasSpDep}; in buildTensorExp()
1352 return {addExp(TensorExp::Kind::kTanhC, e), hasSpDep}; in buildTensorExp()
1354 return {addExp(TensorExp::Kind::kNegF, e), hasSpDep}; // no negi in std in buildTensorExp()
1356 return {addExp(TensorExp::Kind::kNegC, e), hasSpDep}; in buildTensorExp()
1358 return {addExp(TensorExp::Kind::kTruncF, e, v), hasSpDep}; in buildTensorExp()
1360 return {addExp(TensorExp::Kind::kExtF, e, v), hasSpDep}; in buildTensorExp()
1362 return {addExp(TensorExp::Kind::kCastFS, e, v), hasSpDep}; in buildTensorExp()
1364 return {addExp(TensorExp::Kind::kCastFU, e, v), hasSpDep}; in buildTensorExp()
1366 return {addExp(TensorExp::Kind::kCastSF, e, v), hasSpDep}; in buildTensorExp()
1368 return {addExp(TensorExp::Kind::kCastUF, e, v), hasSpDep}; in buildTensorExp()
1370 return {addExp(TensorExp::Kind::kCastS, e, v), hasSpDep}; in buildTensorExp()
1372 return {addExp(TensorExp::Kind::kCastU, e, v), hasSpDep}; in buildTensorExp()
1374 return {addExp(TensorExp::Kind::kCastIdx, e, v), hasSpDep}; in buildTensorExp()
1376 return {addExp(TensorExp::Kind::kTruncI, e, v), hasSpDep}; in buildTensorExp()
1378 return {addExp(TensorExp::Kind::kCIm, e), hasSpDep}; in buildTensorExp()
1380 return {addExp(TensorExp::Kind::kCRe, e), hasSpDep}; in buildTensorExp()
1382 return {addExp(TensorExp::Kind::kBitCast, e, v), hasSpDep}; in buildTensorExp()
1386 return {addExp(TensorExp::Kind::kUnary, e, Value(), def), hasSpDep}; in buildTensorExp()
1390 return {addExp(TensorExp::Kind::kSelect, e, Value(), def), hasSpDep}; in buildTensorExp()
1410 return {addExp(TensorExp::Kind::kMulF, e0, e1), conjSpVals}; in buildTensorExp()
1412 return {addExp(TensorExp::Kind::kMulC, e0, e1), conjSpVals}; in buildTensorExp()
1414 return {addExp(TensorExp::Kind::kMulI, e0, e1), conjSpVals}; in buildTensorExp()
1416 return {addExp(TensorExp::Kind::kDivF, e0, e1), conjSpVals}; in buildTensorExp()
1418 return {addExp(TensorExp::Kind::kDivC, e0, e1), conjSpVals}; in buildTensorExp()
1420 return {addExp(TensorExp::Kind::kDivS, e0, e1), conjSpVals}; in buildTensorExp()
1422 return {addExp(TensorExp::Kind::kDivU, e0, e1), conjSpVals}; in buildTensorExp()
1424 return {addExp(TensorExp::Kind::kAddF, e0, e1), disjSpVals}; in buildTensorExp()
1426 return {addExp(TensorExp::Kind::kAddC, e0, e1), disjSpVals}; in buildTensorExp()
1428 return {addExp(TensorExp::Kind::kAddI, e0, e1), disjSpVals}; in buildTensorExp()
1430 return {addExp(TensorExp::Kind::kSubF, e0, e1), disjSpVals}; in buildTensorExp()
1432 return {addExp(TensorExp::Kind::kSubC, e0, e1), disjSpVals}; in buildTensorExp()
1434 return {addExp(TensorExp::Kind::kSubI, e0, e1), disjSpVals}; in buildTensorExp()
1436 return {addExp(TensorExp::Kind::kAndI, e0, e1), conjSpVals}; in buildTensorExp()
1438 return {addExp(TensorExp::Kind::kOrI, e0, e1), disjSpVals}; in buildTensorExp()
1440 return {addExp(TensorExp::Kind::kXorI, e0, e1), disjSpVals}; in buildTensorExp()
1442 return {addExp(TensorExp::Kind::kShrS, e0, e1), conjSpVals}; in buildTensorExp()
1444 return {addExp(TensorExp::Kind::kShrU, e0, e1), conjSpVals}; in buildTensorExp()
1446 return {addExp(TensorExp::Kind::kShlI, e0, e1), conjSpVals}; in buildTensorExp()
1458 auto e = addExp(TensorExp::Kind::kCmpI, e0, e1, nullptr, in buildTensorExp()
1476 auto e = addExp(TensorExp::Kind::kCmpF, e0, e1, nullptr, in buildTensorExp()
1486 return {addExp(TensorExp::Kind::kBinary, e0, e1, def), conjSpVals}; in buildTensorExp()
1502 return {addExp(TensorExp::Kind::kReduce, e0, e1, def), hasSpDep}; in buildTensorExp()
1509 if (isGreater(cnd.kind, cnd.attr) && in buildTensorExp()
1510 exp(*y).kind == TensorExp::Kind::kTensor && in buildTensorExp()
1511 exp(*z).kind == TensorExp::Kind::kInvariant && in buildTensorExp()
1515 if (a.kind == TensorExp::Kind::kTensor && in buildTensorExp()
1517 b.kind == TensorExp::Kind::kInvariant && isCertainZero(b.val)) { in buildTensorExp()
1518 return {addExp(TensorExp::Kind::kRelu, *y, detail::kInvalidId, in buildTensorExp()
1542 auto e = addExp(TensorExp::Kind::kDenseOp, *subExp[0].first, in buildTensorExp()
1547 auto e = addExp(TensorExp::Kind::kDenseOp, *subExp[0].first, in buildTensorExp()
1621 switch (expr.kind) { in buildExp()
1623 case TensorExp::Kind::kTensor: in buildExp()
1624 case TensorExp::Kind::kInvariant: in buildExp()
1625 case TensorExp::Kind::kLoopVar: in buildExp()
1626 case TensorExp::Kind::kSynZero: in buildExp()
1629 case TensorExp::Kind::kAbsF: in buildExp()
1631 case TensorExp::Kind::kAbsC: { in buildExp()
1636 case TensorExp::Kind::kAbsI: in buildExp()
1638 case TensorExp::Kind::kCeilF: in buildExp()
1640 case TensorExp::Kind::kFloorF: in buildExp()
1642 case TensorExp::Kind::kSqrtF: in buildExp()
1644 case TensorExp::Kind::kSqrtC: in buildExp()
1646 case TensorExp::Kind::kExpm1F: in buildExp()
1648 case TensorExp::Kind::kExpm1C: in buildExp()
1650 case TensorExp::Kind::kLog1pF: in buildExp()
1652 case TensorExp::Kind::kLog1pC: in buildExp()
1654 case TensorExp::Kind::kRelu: in buildExp()
1656 case TensorExp::Kind::kSinF: in buildExp()
1658 case TensorExp::Kind::kSinC: in buildExp()
1660 case TensorExp::Kind::kTanhF: in buildExp()
1662 case TensorExp::Kind::kTanhC: in buildExp()
1664 case TensorExp::Kind::kNegF: in buildExp()
1666 case TensorExp::Kind::kNegC: in buildExp()
1668 case TensorExp::Kind::kNegI: // no negi in std in buildExp()
1674 case TensorExp::Kind::kTruncF: in buildExp()
1676 case TensorExp::Kind::kExtF: in buildExp()
1678 case TensorExp::Kind::kCastFS: in buildExp()
1680 case TensorExp::Kind::kCastFU: in buildExp()
1682 case TensorExp::Kind::kCastSF: in buildExp()
1684 case TensorExp::Kind::kCastUF: in buildExp()
1686 case TensorExp::Kind::kCastS: in buildExp()
1688 case TensorExp::Kind::kCastU: in buildExp()
1690 case TensorExp::Kind::kCastIdx: in buildExp()
1692 case TensorExp::Kind::kTruncI: in buildExp()
1694 case TensorExp::Kind::kCIm: { in buildExp()
1699 case TensorExp::Kind::kCRe: { in buildExp()
1704 case TensorExp::Kind::kBitCast: in buildExp()
1707 case TensorExp::Kind::kMulF: in buildExp()
1709 case TensorExp::Kind::kMulC: in buildExp()
1711 case TensorExp::Kind::kMulI: in buildExp()
1713 case TensorExp::Kind::kDivF: in buildExp()
1715 case TensorExp::Kind::kDivC: in buildExp()
1717 case TensorExp::Kind::kDivS: in buildExp()
1719 case TensorExp::Kind::kDivU: in buildExp()
1721 case TensorExp::Kind::kAddF: in buildExp()
1723 case TensorExp::Kind::kAddC: in buildExp()
1725 case TensorExp::Kind::kAddI: in buildExp()
1727 case TensorExp::Kind::kSubF: in buildExp()
1729 case TensorExp::Kind::kSubC: in buildExp()
1731 case TensorExp::Kind::kSubI: in buildExp()
1733 case TensorExp::Kind::kAndI: in buildExp()
1735 case TensorExp::Kind::kOrI: in buildExp()
1737 case TensorExp::Kind::kXorI: in buildExp()
1739 case TensorExp::Kind::kShrS: in buildExp()
1741 case TensorExp::Kind::kShrU: in buildExp()
1743 case TensorExp::Kind::kShlI: in buildExp()
1745 case TensorExp::Kind::kCmpI: { in buildExp()
1749 case TensorExp::Kind::kCmpF: { in buildExp()
1753 case TensorExp::Kind::kBinaryBranch: // semi-ring ops with custom logic. in buildExp()
1756 case TensorExp::Kind::kUnary: in buildExp()
1758 case TensorExp::Kind::kSelect: in buildExp()
1762 case TensorExp::Kind::kBinary: in buildExp()
1764 case TensorExp::Kind::kReduce: { in buildExp()
1768 case TensorExp::Kind::kDenseOp: { in buildExp()
1777 llvm_unreachable("unexpected expression kind in build"); in buildExp()