@@ -37,62 +37,107 @@ def CreateONNXMaxOp : NativeCodeCall<"$_builder.create<ONNXMaxOp>($_loc, $0.getT
37
37
// ONNXAddOp %X = ZHighUnstickOp (ZHighAddOp (ZHighStickOp %X),
38
38
// (ZHighStickOp %Y))
39
39
//===----------------------------------------------------------------------===//
40
- def replaceZHighAddPattern : Pat<
41
- (ZHighUnstickOp (ZHighAddOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_) )),
42
- (ONNXAddOp $x, $y ),
43
- [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y) ]
40
+ def replaceZHighAddPattern1 : Pat<
41
+ (ZHighUnstickOp (ZHighAddOp (ZHighStickOp:$s_x $x, $_), $y )),
42
+ (ONNXAddOp $x, (ZHighUnstickOp $y) ),
43
+ [(NotBlockArgument:$x), (HasOneUse:$s_x)]
44
44
>;
45
45
46
+ def replaceZHighAddPattern2 : Pat<
47
+ (ZHighUnstickOp (ZHighAddOp $x, (ZHighStickOp:$s_y $y, $_))),
48
+ (ONNXAddOp (ZHighUnstickOp $x), $y),
49
+ [(NotBlockArgument:$y), (HasOneUse:$s_y)]
50
+ >;
46
51
47
52
//===----------------------------------------------------------------------===//
48
53
// ONNXMulOp %X = ZHighUnstickOp (ZHighMulOp (ZHighStickOp %X),
49
54
// (ZHighStickOp %Y))
50
55
//===----------------------------------------------------------------------===//
51
- def replaceZHighMulPattern : Pat<
52
- (ZHighUnstickOp (ZHighMulOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_))),
53
- (ONNXMulOp $x, $y),
54
- [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y)]
56
+ def replaceZHighMulPattern1 : Pat<
57
+ (ZHighUnstickOp (ZHighMulOp (ZHighStickOp:$s_x $x, $_), $y)),
58
+ (ONNXMulOp $x, (ZHighUnstickOp $y)),
59
+ [(NotBlockArgument:$x), (HasOneUse:$s_x)], [ ],
60
+ (addBenefit 1)
61
+ >;
62
+
63
+ def replaceZHighMulPattern2 : Pat<
64
+ (ZHighUnstickOp (ZHighMulOp $x, (ZHighStickOp:$s_y $y, $_))),
65
+ (ONNXMulOp (ZHighUnstickOp $x), $y),
66
+ [(NotBlockArgument:$y), (HasOneUse:$s_y)], [],
67
+ (addBenefit 0)
55
68
>;
56
69
57
70
//===----------------------------------------------------------------------===//
58
71
// ONNXSubOp %X = ZHighUnstickOp (ZHighSubOp (ZHighStickOp %X),
59
72
// (ZHighStickOp %Y))
60
73
//===----------------------------------------------------------------------===//
61
- def replaceZHighSubPattern : Pat<
62
- (ZHighUnstickOp (ZHighSubOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_))),
63
- (ONNXSubOp $x, $y),
64
- [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y)]
74
+ def replaceZHighSubPattern1 : Pat<
75
+ (ZHighUnstickOp (ZHighSubOp (ZHighStickOp:$s_x $x, $_), $y)),
76
+ (ONNXSubOp $x, (ZHighUnstickOp $y)),
77
+ [(NotBlockArgument:$x), (HasOneUse:$s_x)], [ ],
78
+ (addBenefit 1)
79
+ >;
80
+
81
+ def replaceZHighSubPattern2 : Pat<
82
+ (ZHighUnstickOp (ZHighSubOp $x, (ZHighStickOp:$s_y $y, $_))),
83
+ (ONNXSubOp (ZHighUnstickOp $x), $y),
84
+ [(NotBlockArgument:$y), (HasOneUse:$s_y)], [ ],
85
+ (addBenefit 0)
65
86
>;
66
87
67
88
//===----------------------------------------------------------------------===//
68
89
// ONNXDivOp %X = ZHighUnstickOp (ZHighDivOp (ZHighStickOp
69
90
// %X),(ZHighStickOp %Y))
70
91
// Note: turn off this pattern since NNPA is faster at this moment.
71
92
//===----------------------------------------------------------------------===//
72
- // def replaceZHighDivPattern : Pat<
73
- // (ZHighUnstickOp (ZHighDivOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_))),
74
- // (ONNXDivOp $x, $y),
75
- // [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y)]
76
- // >;
93
+ //def replaceZHighDivPattern1 : Pat<
94
+ // (ZHighUnstickOp (ZHighDivOp (ZHighStickOp:$s_x $x, $_), $y)),
95
+ // (ONNXDivOp $x, (ZHighUnstickOp $y)),
96
+ // [(NotBlockArgument:$x), (HasOneUse:$s_x)], [ ],
97
+ // (addBenefit 1)
98
+ //>;
99
+ //
100
+ //def replaceZHighDivPattern2 : Pat<
101
+ // (ZHighUnstickOp (ZHighDivOp $x, (ZHighStickOp:$s_y $y, $_))),
102
+ // (ONNXDivOp (ZHighUnstickOp $x), $y),
103
+ // [(NotBlockArgument:$y), (HasOneUse:$s_y)], [ ],
104
+ // (addBenefit 0)
105
+ //>;
77
106
78
107
//===----------------------------------------------------------------------===//
79
108
// ONNXMinOp %X = ZHighUnstickOp (ZHighMinOp (ZHighStickOp %X),
80
109
// (ZHighStickOp %Y))
81
110
//===----------------------------------------------------------------------===//
82
- def replaceZHighMinPattern : Pat<
83
- (ZHighUnstickOp:$u (ZHighMinOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_))),
84
- (CreateONNXMinOp $u, $x, $y),
85
- [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y)]
111
+ def replaceZHighMinPattern1 : Pat<
112
+ (ZHighUnstickOp:$u (ZHighMinOp (ZHighStickOp:$s_x $x, $_), $y)),
113
+ (CreateONNXMinOp $u, $x, (ZHighUnstickOp $y)),
114
+ [(NotBlockArgument:$x), (HasOneUse:$s_x)], [ ],
115
+ (addBenefit 1)
116
+ >;
117
+
118
+ def replaceZHighMinPattern2 : Pat<
119
+ (ZHighUnstickOp:$u (ZHighMinOp $x, (ZHighStickOp:$s_y $y, $_))),
120
+ (CreateONNXMinOp $u, (ZHighUnstickOp $x), $y),
121
+ [(NotBlockArgument:$y), (HasOneUse:$s_y)], [ ],
122
+ (addBenefit 0)
86
123
>;
87
124
88
125
//===----------------------------------------------------------------------===//
89
126
// ONNXMaxOp %X = ZHighUnstickOp (ZHighMaxOp (ZHighStickOp %X),
90
127
// (ZHighStickOp %Y))
91
128
//===----------------------------------------------------------------------===//
92
- def replaceZHighMaxPattern : Pat<
93
- (ZHighUnstickOp:$u (ZHighMaxOp (ZHighStickOp:$s_x $x, $_), (ZHighStickOp:$s_y $y, $_))),
94
- (CreateONNXMaxOp $u, $x, $y),
95
- [(NotBlockArgument:$x), (HasOneUse:$s_x), (HasOneUse:$s_y)]
129
+ def replaceZHighMaxPattern1 : Pat<
130
+ (ZHighUnstickOp:$u (ZHighMaxOp (ZHighStickOp:$s_x $x, $_), $y)),
131
+ (CreateONNXMaxOp $u, $x, (ZHighUnstickOp $y)),
132
+ [(NotBlockArgument:$x), (HasOneUse:$s_x)], [ ],
133
+ (addBenefit 1)
134
+ >;
135
+
136
+ def replaceZHighMaxPattern2 : Pat<
137
+ (ZHighUnstickOp:$u (ZHighMaxOp $x, (ZHighStickOp:$s_y $y, $_))),
138
+ (CreateONNXMaxOp $u, (ZHighUnstickOp $x), $y),
139
+ [(NotBlockArgument:$y), (HasOneUse:$s_y)], [ ],
140
+ (addBenefit 0)
96
141
>;
97
142
98
143
//===----------------------------------------------------------------------===//
0 commit comments