1 /* Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6
7 http://www.apache.org/licenses/LICENSE-2.0
8
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15
16 #include "tensorflow/compiler/tf2xla/kernels/random_ops_util.h"
17
18 #include "tensorflow/compiler/xla/client/lib/constants.h"
19
20 namespace tensorflow {
21
GetU64FromS32Seeds(xla::XlaOp seed0,xla::XlaOp seed1)22 xla::XlaOp GetU64FromS32Seeds(xla::XlaOp seed0, xla::XlaOp seed1) {
23 // Here, the seeds are cast to unsigned type of the same width to have leading
24 // zeros in the 64 bit representation.
25 xla::XlaOp u64_seed0 =
26 ConvertElementType(ConvertElementType(seed0, xla::U32), xla::U64);
27 xla::XlaOp u64_seed1 =
28 ConvertElementType(ConvertElementType(seed1, xla::U32), xla::U64);
29 return u64_seed0 |
30 (u64_seed1 << ConstantR0WithType(seed0.builder(), xla::U64, 32));
31 }
32
33 } // namespace tensorflow
34