@@ -48,6 +48,18 @@ void test_vectorized_binary(unsigned op1, unsigned op2, unsigned expected,
4848 op1, op2, expected, need_relu);
4949}
5050
51+ template <typename BinaryOp, typename ValueT>
52+ void test_vectorized_binary_logical (unsigned op1, unsigned op2,
53+ unsigned expected) {
54+ std::cout << __PRETTY_FUNCTION__ << std::endl;
55+ constexpr syclcompat::dim3 grid{1 };
56+ constexpr syclcompat::dim3 threads{1 };
57+
58+ BinaryOpTestLauncher<unsigned , unsigned , unsigned >(grid, threads)
59+ .template launch_test <vectorized_binary_kernel<BinaryOp, ValueT>>(
60+ op1, op2, expected, false );
61+ }
62+
5163template <typename UnaryOp, typename ValueT>
5264void vectorized_unary_kernel (unsigned *a, unsigned *r) {
5365 *r = syclcompat::vectorized_unary<ValueT>(*a, UnaryOp ());
@@ -203,5 +215,67 @@ int main() {
203215 test_vectorized_binary_with_pred<syclcompat::minimum, sycl::ushort2>(
204216 0x80010002 , 0x00040002 , 0x00040002 , false , true );
205217
218+ // Logical Binary Operators v2
219+ test_vectorized_binary_logical<std::equal_to<>, sycl::short2>(
220+ 0xFFF00002 , 0xFFF00001 , 0xFFFF0000 );
221+ test_vectorized_binary_logical<std::equal_to<>, sycl::short2>(
222+ 0x0001F00F , 0x0003F00F , 0x0000FFFF );
223+
224+ test_vectorized_binary_logical<std::not_equal_to<>, sycl::short2>(
225+ 0xFFF00002 , 0xFFF00001 , 0x0000FFFF );
226+ test_vectorized_binary_logical<std::not_equal_to<>, sycl::short2>(
227+ 0x0001F00F , 0x0003F00F , 0xFFFF0000 );
228+
229+ test_vectorized_binary_logical<std::greater_equal<>, sycl::short2>(
230+ 0xFFF00002 , 0xFFF00001 , 0xFFFFFFFF );
231+ test_vectorized_binary_logical<std::greater_equal<>, sycl::short2>(
232+ 0x0001F00F , 0x0003F001 , 0x0000FFFF );
233+
234+ test_vectorized_binary_logical<std::greater<>, sycl::short2>(
235+ 0xFFF00002 , 0xFFF00001 , 0x0000FFFF );
236+ test_vectorized_binary_logical<std::greater<>, sycl::short2>(
237+ 0x0003F00F , 0x0001F00F , 0xFFFF0000 );
238+
239+ test_vectorized_binary_logical<std::less_equal<>, sycl::short2>(
240+ 0xFFF00001 , 0xF0F00002 , 0x0000FFFF );
241+ test_vectorized_binary_logical<std::less_equal<>, sycl::short2>(
242+ 0x0001FF0F , 0x0003F00F , 0xFFFF0000 );
243+
244+ test_vectorized_binary_logical<std::less<>, sycl::short2>(
245+ 0xFFF00001 , 0xFFF00002 , 0x0000FFFF );
246+ test_vectorized_binary_logical<std::less<>, sycl::short2>(
247+ 0x0001F00F , 0x0003F00F , 0xFFFF0000 );
248+
249+ // Logical Binary Operators v4
250+ test_vectorized_binary_logical<std::equal_to<>, sycl::uchar4>(
251+ 0x0001F00F , 0x0003F00F , 0xFF00FFFF );
252+ test_vectorized_binary_logical<std::equal_to<>, sycl::uchar4>(
253+ 0x0102F0F0 , 0x0202F0FF , 0x00FFFF00 );
254+
255+ test_vectorized_binary_logical<std::not_equal_to<>, sycl::uchar4>(
256+ 0x0001F00F , 0xFF01F10F , 0xFF00FF00 );
257+ test_vectorized_binary_logical<std::not_equal_to<>, sycl::uchar4>(
258+ 0x0201F0F0 , 0x0202F0FF , 0x00FF00FF );
259+
260+ test_vectorized_binary_logical<std::greater_equal<>, sycl::uchar4>(
261+ 0xFFF00002 , 0xFFF10101 , 0xFF0000FF );
262+ test_vectorized_binary_logical<std::greater_equal<>, sycl::uchar4>(
263+ 0x0001F1F0 , 0x0103F001 , 0x0000FFFF );
264+
265+ test_vectorized_binary_logical<std::greater<>, sycl::uchar4>(
266+ 0xFFF00002 , 0xF0F00001 , 0xFF0000FF );
267+ test_vectorized_binary_logical<std::greater<>, sycl::uchar4>(
268+ 0x0103F0F1 , 0x0102F0F0 , 0x00FF00FF );
269+
270+ test_vectorized_binary_logical<std::less_equal<>, sycl::uchar4>(
271+ 0xFFF10001 , 0xFFF00100 , 0xFF00FF00 );
272+ test_vectorized_binary_logical<std::less_equal<>, sycl::uchar4>(
273+ 0x0101F1F0 , 0x0003F0F1 , 0x00FF00FF );
274+
275+ test_vectorized_binary_logical<std::less<>, sycl::uchar4>(
276+ 0xFFF10001 , 0xFFF20100 , 0x00FFFF00 );
277+ test_vectorized_binary_logical<std::less<>, sycl::uchar4>(
278+ 0x0101F1F0 , 0x0102F1F1 , 0x00FF00FF );
279+
206280 return 0 ;
207281}
0 commit comments