#define TORCH_ASSERT_NO_OPERATORS #include #include #include #include #include #include namespace at::native { void and_kernel_cuda(TensorIterator& iter) { AT_DISPATCH_ALL_TYPES_AND_COMPLEX_AND3( kHalf, kBFloat16, kBool, iter.common_dtype(), "and_cuda", [&]() { gpu_reduce_kernel( iter, func_wrapper([] GPU_LAMBDA(scalar_t a, scalar_t b) -> bool { return (static_cast(a) && static_cast(b)); }), true); }); } void or_kernel_cuda(TensorIterator& iter) { AT_DISPATCH_ALL_TYPES_AND_COMPLEX_AND3( kHalf, kBFloat16, kBool, iter.common_dtype(), "or_cuda", [&]() { gpu_reduce_kernel( iter, func_wrapper([] GPU_LAMBDA(scalar_t a, scalar_t b) -> bool { return (static_cast(a) || static_cast(b)); }), false); }); } REGISTER_DISPATCH(and_stub, &and_kernel_cuda); REGISTER_DISPATCH(or_stub, &or_kernel_cuda); } // namespace at::native