@@ -109,7 +109,7 @@ void verify_op_c(const T l, const T r, const float ref, OP op) {
109
109
template <typename T, size_t SROWS, size_t SCOLS, use Use, class name >
110
110
class ewops_ab {};
111
111
template <typename T, size_t SROWS, size_t SCOLS, use Use, layout Layout,
112
- size_t VF>
112
+ size_t VF, typename Tv = T >
113
113
void test_ewops_ab () {
114
114
if constexpr (Use == use::a)
115
115
std::cout << " Test A " ;
@@ -122,41 +122,43 @@ void test_ewops_ab() {
122
122
123
123
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
124
124
ewops_ab<T, SROWS, SCOLS, Use, class ab_add >>(
125
- T (5.0 ), T (2.0 ), 7.0 , [](auto l, auto r) { return l + r; });
125
+ Tv (5.0 ), Tv (2.0 ), 7.0 , [](auto l, auto r) { return l + r; });
126
126
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
127
127
ewops_ab<T, SROWS, SCOLS, Use, class ab_sub >>(
128
- T (5.0 ), T (2.0 ), 3.0 , [](auto l, auto r) { return l - r; });
128
+ Tv (5.0 ), Tv (2.0 ), 3.0 , [](auto l, auto r) { return l - r; });
129
129
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
130
130
ewops_ab<T, SROWS, SCOLS, Use, class ab_mul >>(
131
- T (5.0 ), T (2.0 ), 10.0 , [](auto l, auto r) { return l * r; });
131
+ Tv (5.0 ), Tv (2.0 ), 10.0 , [](auto l, auto r) { return l * r; });
132
132
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
133
133
ewops_ab<T, SROWS, SCOLS, Use, class ab_div >>(
134
- T (5.0 ), T (2.0 ), 2.5 , [](auto l, auto r) { return l / r; });
134
+ Tv (5.0 ), Tv (2.0 ), 2.5 , [](auto l, auto r) { return l / r; });
135
135
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
136
136
ewops_ab<T, SROWS, SCOLS, Use, class ab_logical >>(
137
- T (5.0 ), T (5.0 ), 5.0 , [](auto l, auto r) { return l == r ? l : T (1.0 ); });
137
+ Tv (5.0 ), Tv (5.0 ), 5.0 ,
138
+ [](auto l, auto r) { return l == r ? l : Tv (1.0 ); });
138
139
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
139
140
ewops_ab<T, SROWS, SCOLS, Use, class ab_eq >>(
140
- T (5.0 ), T (4.0 ), 4.0 , [](auto l, auto r) { return l == r ? l : r; });
141
+ Tv (5.0 ), Tv (4.0 ), 4.0 , [](auto l, auto r) { return l == r ? l : r; });
141
142
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
142
143
ewops_ab<T, SROWS, SCOLS, Use, class ab_ne >>(
143
- T (5.0 ), T (5.0 ), 1.0 , [](auto l, auto r) { return l != r ? l : T (1.0 ); });
144
+ Tv (5.0 ), Tv (5.0 ), 1.0 ,
145
+ [](auto l, auto r) { return l != r ? l : Tv (1.0 ); });
144
146
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
145
147
ewops_ab<T, SROWS, SCOLS, Use, class ab_gt >>(
146
- T (5.0 ), T (2.0 ), 3.0 ,
147
- [](auto l, auto r) { return l > r ? T (3.0 ) : T (2.0 ); });
148
+ Tv (5.0 ), Tv (2.0 ), 3.0 ,
149
+ [](auto l, auto r) { return l > r ? Tv (3.0 ) : Tv (2.0 ); });
148
150
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
149
151
ewops_ab<T, SROWS, SCOLS, Use, class ab_lt >>(
150
- T (5.0 ), T (2.0 ), 2.0 ,
151
- [](auto l, auto r) { return l < r ? T (3.0 ) : T (2.0 ); });
152
+ Tv (5.0 ), Tv (2.0 ), 2.0 ,
153
+ [](auto l, auto r) { return l < r ? Tv (3.0 ) : Tv (2.0 ); });
152
154
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
153
155
ewops_ab<T, SROWS, SCOLS, Use, class ab_ge >>(
154
- T (5.0 ), T (2.0 ), 3.0 ,
155
- [](auto l, auto r) { return l >= r ? T (3.0 ) : T (2.0 ); });
156
+ Tv (5.0 ), Tv (2.0 ), 3.0 ,
157
+ [](auto l, auto r) { return l >= r ? Tv (3.0 ) : Tv (2.0 ); });
156
158
verify_op_ab<T, NROWS, NCOLS, SROWS, SCOLS, Use, Layout, VF,
157
159
ewops_ab<T, SROWS, SCOLS, Use, class ab_le >>(
158
- T (5.0 ), T (2.0 ), 2.0 ,
159
- [](auto l, auto r) { return l <= r ? T (3.0 ) : T (2.0 ); });
160
+ Tv (5.0 ), Tv (2.0 ), 2.0 ,
161
+ [](auto l, auto r) { return l <= r ? Tv (3.0 ) : Tv (2.0 ); });
160
162
}
161
163
162
164
// Avoid same kernel name for different types and numbers of columns
0 commit comments