diff options
author | 2017-12-03 06:30:40 -0800 | |
---|---|---|
committer | 2017-12-03 06:30:40 -0800 | |
commit | 48892001b48d628a00a535d4cc19d9d7b5fcac11 (patch) | |
tree | 98768985b3df81508d0b8417aa0f558a7f72d41c /tensorflow | |
parent | 0fee74eadea48baec80a979763eb19096d148026 (diff) |
Add uint32 and uint64 support for `bitwise_and/or/xor` (#14883)
* Add uint32 and uint64 support for `bitwise_and/or/xor`
In `tensorflow/core/ops/bitwise_ops.cc`, uint32 and uint64
have been enabled for bitwise operations `and/or/xor/left_shift/right_shift`.
However, the kernels of `and/or/xor` have no support of uint32
and uint64. This is in comparision to `left_shift/right_shift` which
have the uint32/uint64 support, and, is tested in `bitwise_ops_test.py`.
This fix adds uint32 and uint64 to bitwise `and/or/xor` kernels and
adds relevant test cases in `bitwise_ops_test.py`, to bring `and/or/xor`
as `left_shift/right_shift`.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Add uint32 and uint64 support for bitwise_and
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Add uint32 and uint64 support for bitwise_or
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Add uint32 and uint64 support for bitwise_xor
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Register GPU functor for bitwise_and, bitwise_or, bitwise_xor
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Sanitize with clang-format -i --style=Google
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Diffstat (limited to 'tensorflow')
-rw-r--r-- | tensorflow/core/kernels/cwise_op_bitwise_and.cc | 10 | ||||
-rw-r--r-- | tensorflow/core/kernels/cwise_op_bitwise_or.cc | 10 | ||||
-rw-r--r-- | tensorflow/core/kernels/cwise_op_bitwise_xor.cc | 10 | ||||
-rw-r--r-- | tensorflow/core/kernels/cwise_op_gpu_bitwise_and.cu.cc | 3 | ||||
-rw-r--r-- | tensorflow/core/kernels/cwise_op_gpu_bitwise_or.cu.cc | 3 | ||||
-rw-r--r-- | tensorflow/core/kernels/cwise_op_gpu_bitwise_xor.cu.cc | 3 | ||||
-rw-r--r-- | tensorflow/python/ops/bitwise_ops_test.py | 2 |
7 files changed, 25 insertions, 16 deletions
diff --git a/tensorflow/core/kernels/cwise_op_bitwise_and.cc b/tensorflow/core/kernels/cwise_op_bitwise_and.cc index 017a2182dc..5a6cf4bad1 100644 --- a/tensorflow/core/kernels/cwise_op_bitwise_and.cc +++ b/tensorflow/core/kernels/cwise_op_bitwise_and.cc @@ -16,8 +16,8 @@ limitations under the License. #include "tensorflow/core/kernels/cwise_ops_common.h" namespace tensorflow { -REGISTER6(BinaryOp, CPU, "BitwiseAnd", functor::bitwise_and, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, CPU, "BitwiseAnd", functor::bitwise_and, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #if TENSORFLOW_USE_SYCL #define REGISTER_SYCL_KERNEL(TYPE) \ @@ -30,13 +30,15 @@ REGISTER_SYCL_KERNEL(int32); REGISTER_SYCL_KERNEL(int64); REGISTER_SYCL_KERNEL(uint8); REGISTER_SYCL_KERNEL(uint16); +REGISTER_SYCL_KERNEL(uint32); +REGISTER_SYCL_KERNEL(uint64); #undef REGISTER_SYCL_KERNEL #endif // TENSORFLOW_USE_SYCL #if GOOGLE_CUDA -REGISTER6(BinaryOp, GPU, "BitwiseAnd", functor::bitwise_and, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, GPU, "BitwiseAnd", functor::bitwise_and, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #endif // GOOGLE_CUDA } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_bitwise_or.cc b/tensorflow/core/kernels/cwise_op_bitwise_or.cc index 36f45fe92d..201a10198a 100644 --- a/tensorflow/core/kernels/cwise_op_bitwise_or.cc +++ b/tensorflow/core/kernels/cwise_op_bitwise_or.cc @@ -16,8 +16,8 @@ limitations under the License. #include "tensorflow/core/kernels/cwise_ops_common.h" namespace tensorflow { -REGISTER6(BinaryOp, CPU, "BitwiseOr", functor::bitwise_or, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, CPU, "BitwiseOr", functor::bitwise_or, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #if TENSORFLOW_USE_SYCL #define REGISTER_SYCL_KERNEL(TYPE) \ @@ -30,13 +30,15 @@ REGISTER_SYCL_KERNEL(int32); REGISTER_SYCL_KERNEL(int64); REGISTER_SYCL_KERNEL(uint8); REGISTER_SYCL_KERNEL(uint16); +REGISTER_SYCL_KERNEL(uint32); +REGISTER_SYCL_KERNEL(uint64); #undef REGISTER_SYCL_KERNEL #endif // TENSORFLOW_USE_SYCL #if GOOGLE_CUDA -REGISTER6(BinaryOp, GPU, "BitwiseOr", functor::bitwise_or, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, GPU, "BitwiseOr", functor::bitwise_or, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #endif // GOOGLE_CUDA } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_bitwise_xor.cc b/tensorflow/core/kernels/cwise_op_bitwise_xor.cc index 36432d851d..2a7cd26995 100644 --- a/tensorflow/core/kernels/cwise_op_bitwise_xor.cc +++ b/tensorflow/core/kernels/cwise_op_bitwise_xor.cc @@ -16,8 +16,8 @@ limitations under the License. #include "tensorflow/core/kernels/cwise_ops_common.h" namespace tensorflow { -REGISTER6(BinaryOp, CPU, "BitwiseXor", functor::bitwise_xor, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, CPU, "BitwiseXor", functor::bitwise_xor, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #if TENSORFLOW_USE_SYCL #define REGISTER_SYCL_KERNEL(TYPE) \ @@ -30,13 +30,15 @@ REGISTER_SYCL_KERNEL(int32); REGISTER_SYCL_KERNEL(int64); REGISTER_SYCL_KERNEL(uint8); REGISTER_SYCL_KERNEL(uint16); +REGISTER_SYCL_KERNEL(uint32); +REGISTER_SYCL_KERNEL(uint64); #undef REGISTER_SYCL_KERNEL #endif // TENSORFLOW_USE_SYCL #if GOOGLE_CUDA -REGISTER6(BinaryOp, GPU, "BitwiseXor", functor::bitwise_xor, int8, int16, int32, - int64, uint8, uint16); +REGISTER8(BinaryOp, GPU, "BitwiseXor", functor::bitwise_xor, int8, int16, int32, + int64, uint8, uint16, uint32, uint64); #endif // GOOGLE_CUDA } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_gpu_bitwise_and.cu.cc b/tensorflow/core/kernels/cwise_op_gpu_bitwise_and.cu.cc index 27f973c90d..3fbf69c114 100644 --- a/tensorflow/core/kernels/cwise_op_gpu_bitwise_and.cu.cc +++ b/tensorflow/core/kernels/cwise_op_gpu_bitwise_and.cu.cc @@ -19,7 +19,8 @@ limitations under the License. namespace tensorflow { namespace functor { -DEFINE_BINARY6(bitwise_and, int8, int16, int32, int64, uint8, uint16); +DEFINE_BINARY8(bitwise_and, int8, int16, int32, int64, uint8, uint16, uint32, + uint64); } // namespace functor } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_gpu_bitwise_or.cu.cc b/tensorflow/core/kernels/cwise_op_gpu_bitwise_or.cu.cc index a34c3a52cd..8bcb82266a 100644 --- a/tensorflow/core/kernels/cwise_op_gpu_bitwise_or.cu.cc +++ b/tensorflow/core/kernels/cwise_op_gpu_bitwise_or.cu.cc @@ -19,7 +19,8 @@ limitations under the License. namespace tensorflow { namespace functor { -DEFINE_BINARY6(bitwise_or, int8, int16, int32, int64, uint8, uint16); +DEFINE_BINARY8(bitwise_or, int8, int16, int32, int64, uint8, uint16, uint32, + uint64); } // namespace functor } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_gpu_bitwise_xor.cu.cc b/tensorflow/core/kernels/cwise_op_gpu_bitwise_xor.cu.cc index a4531ab7c6..e62a87aba4 100644 --- a/tensorflow/core/kernels/cwise_op_gpu_bitwise_xor.cu.cc +++ b/tensorflow/core/kernels/cwise_op_gpu_bitwise_xor.cu.cc @@ -19,7 +19,8 @@ limitations under the License. namespace tensorflow { namespace functor { -DEFINE_BINARY6(bitwise_xor, int8, int16, int32, int64, uint8, uint16); +DEFINE_BINARY8(bitwise_xor, int8, int16, int32, int64, uint8, uint16, uint32, + uint64); } // namespace functor } // namespace tensorflow diff --git a/tensorflow/python/ops/bitwise_ops_test.py b/tensorflow/python/ops/bitwise_ops_test.py index fa1b219b17..75eb100a90 100644 --- a/tensorflow/python/ops/bitwise_ops_test.py +++ b/tensorflow/python/ops/bitwise_ops_test.py @@ -36,7 +36,7 @@ class BitwiseOpTest(test_util.TensorFlowTestCase): def testBinaryOps(self): dtype_list = [dtypes.int8, dtypes.int16, dtypes.int32, dtypes.int64, - dtypes.uint8, dtypes.uint16] + dtypes.uint8, dtypes.uint16, dtypes.uint32, dtypes.uint64] with self.test_session(use_gpu=True) as sess: for dtype in dtype_list: |