**Supported operators for device: XLA_GPU_JIT** Operator | Type Constraint ------------------------------------- | --------------- `Abs` | `T={double,float,int32,int64}` `Acos` | `T={complex64,double,float,int32,int64}` `Acosh` | `T={complex64,double,float}` `Add` | `T={complex64,double,float,int32,int64}` `AddN` | `T={complex64,double,float,int32,int64,uint32,uint64}` `AdjustContrastv2` | `AdjustHue` | `AdjustSaturation` | `All` | `Tidx={int32,int64}` `Angle` | `Tout={double,float}`
`T={complex64}` `Any` | `Tidx={int32,int64}` `ApproximateEqual` | `T={complex64,double,float,int32,int64,uint32,uint64}` `ArgMax` | `Tidx={int32,int64}`
`output_type={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `ArgMin` | `Tidx={int32,int64}`
`output_type={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `Asin` | `T={complex64,double,float,int32,int64}` `Asinh` | `T={complex64,double,float}` `AssignAddVariableOp` | `dtype={complex64,double,float,int32,int64,uint32,uint64}` `AssignSubVariableOp` | `dtype={complex64,double,float,int32,int64,uint32,uint64}` `AssignVariableOp` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `Atan` | `T={complex64,double,float,int32,int64}` `Atan2` | `T={double,float}` `Atanh` | `T={complex64,double,float}` `AvgPool` | `T={double,float}` `AvgPool3D` | `T={double,float}` `AvgPool3DGrad` | `T={double,float}` `AvgPoolGrad` | `T={double,float}` `BatchMatMul` | `T={complex64,double,float,int32}` `BatchToSpace` | `Tidx={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `BatchToSpaceND` | `Tcrops={int32,int64}`
`Tblock_shape={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `BiasAdd` | `T={complex64,double,float,int32,int64,uint32,uint64}` `BiasAddGrad` | `T={complex64,double,float,int32,int64,uint32,uint64}` `BiasAddV1` | `T={complex64,double,float,int32,int64,uint32,uint64}` `BitwiseAnd` | `T={int32,int64,uint32,uint64}` `BitwiseOr` | `T={int32,int64,uint32,uint64}` `BroadcastArgs` | `T={int32,int64}` `BroadcastGradientArgs` | `T={int32,int64}` `Cast` | `DstT={bool,complex64,double,float,int32,int64,uint32,uint64}`
`SrcT={bool,complex64,double,float,int32,int64,uint32,uint64}` `Ceil` | `T={double,float}` `Cholesky` | `T={double,float}` `Complex` | `Tout={complex64}`
`T={double,float}` `ComplexAbs` | `Tout={double,float}`
`T={complex64}` `Concat` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ConcatOffset` | `ConcatV2` | `Tidx={int32}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Conj` | `T={complex64}` `Const` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `ControlTrigger` | `Conv2D` | `T={float}` `Conv2DBackpropFilter` | `T={float}` `Conv2DBackpropInput` | `T={float}` `Conv3D` | `T={double,float}` `Conv3DBackpropFilterV2` | `T={double,float}` `Conv3DBackpropInputV2` | `T={double,float}` `Cos` | `T={complex64,double,float}` `Cosh` | `T={complex64,double,float}` `Cross` | `T={double,float,int32,int64,uint32,uint64}` `Cumprod` | `Tidx={int32,int64}`
`T={float}` `Cumsum` | `Tidx={int32,int64}`
`T={float}` `DepthToSpace` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `DepthwiseConv2dNative` | `T={double,float}` `DepthwiseConv2dNativeBackpropFilter` | `T={double,float}` `DepthwiseConv2dNativeBackpropInput` | `T={double,float}` `Diag` | `T={complex64,double,float,int32,int64}` `DiagPart` | `T={complex64,double,float,int32,int64}` `Div` | `T={complex64,double,float,int32,int64}` `DynamicStitch` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Elu` | `T={double,float}` `EluGrad` | `T={double,float}` `Equal` | `T={bool,complex64,double,float,int32,int64}` `Exp` | `T={complex64,double,float}` `ExpandDims` | `Tdim={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Expm1` | `T={complex64,double,float}` `ExtractImagePatches` | `T={double,float,int32,int64,uint32,uint64}` `FFT` | `FFT2D` | `FFT3D` | `FakeQuantWithMinMaxArgs` | `FakeQuantWithMinMaxArgsGradient` | `FakeQuantWithMinMaxVars` | `FakeQuantWithMinMaxVarsGradient` | `Fill` | `index_type={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Floor` | `T={double,float}` `FloorDiv` | `T={complex64,double,float,int32,int64}` `FloorMod` | `T={double,float,int32,int64}` `FusedBatchNorm` | `T={float}` `FusedBatchNormGrad` | `T={float}` `FusedBatchNormGradV2` | `U={float}`
`T={float}` `FusedBatchNormV2` | `U={float}`
`T={float}` `Gather` | `Tindices={int32,int64}`
`Tparams={bool,complex64,double,float,int32,int64,uint32,uint64}` `GatherNd` | `Tindices={int32,int64}`
`Tparams={bool,complex64,double,float,int32,int64,uint32,uint64}` `GatherV2` | `Taxis={int32,int64}`
`Tindices={int32,int64}`
`Tparams={bool,complex64,double,float,int32,int64,uint32,uint64}` `Greater` | `T={double,float,int32,int64,uint32,uint64}` `GreaterEqual` | `T={double,float,int32,int64,uint32,uint64}` `HSVToRGB` | `T={double,float}` `IFFT` | `IFFT2D` | `IFFT3D` | `IRFFT` | `IRFFT2D` | `IRFFT3D` | `Identity` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `IdentityN` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Imag` | `Tout={double,float}`
`T={complex64}` `Inv` | `T={complex64,double,float,int32,int64}` `Invert` | `T={int32,int64,uint32,uint64}` `InvertPermutation` | `T={int32}` `IsFinite` | `T={double,float}` `IsInf` | `T={double,float}` `IsNan` | `T={double,float}` `L2Loss` | `T={double,float}` `LRN` | `T={float}` `LRNGrad` | `T={float}` `LeftShift` | `T={int32,int64,uint32,uint64}` `Less` | `T={double,float,int32,int64,uint32,uint64}` `LessEqual` | `T={double,float,int32,int64,uint32,uint64}` `LinSpace` | `Tidx={int32,int64}`
`T={double,float}` `Log` | `T={complex64,double,float}` `Log1p` | `T={complex64,double,float}` `LogSoftmax` | `T={double,float}` `LogicalAnd` | `LogicalNot` | `LogicalOr` | `MatMul` | `T={complex64,double,float}` `MatrixBandPart` | `Tindex={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `MatrixDiag` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `MatrixDiagPart` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `MatrixSetDiag` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `MatrixTriangularSolve` | `T={complex64,double,float}` `Max` | `Tidx={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `MaxPool` | `T={double,float,int32,int64}` `MaxPool3D` | `T={float}` `MaxPool3DGrad` | `TInput={float}`
`T={float}` `MaxPoolGrad` | `T={double,float,int32,int64,uint32,uint64}` `MaxPoolGradGrad` | `T={float}` `MaxPoolGradGradV2` | `T={float}` `MaxPoolGradV2` | `T={double,float,int32,int64,uint32,uint64}` `MaxPoolV2` | `T={double,float,int32,int64}` `Maximum` | `T={double,float,int32,int64}` `Mean` | `Tidx={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `Min` | `Tidx={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `Minimum` | `T={double,float,int32,int64}` `MirrorPad` | `Tpaddings={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Mod` | `T={double,float,int32,int64}` `Mul` | `T={complex64,double,float,int32,int64}` `Multinomial` | `output_dtype={int32,int64}`
`T={double,float,int32,int64,uint32,uint64}` `Neg` | `T={complex64,double,float,int32,int64}` `NoOp` | `NotEqual` | `T={bool,complex64,double,float,int32,int64}` `OneHot` | `TI={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `OnesLike` | `T={bool,complex64,double,float,int32,int64}` `Pack` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Pad` | `Tpaddings={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `PadV2` | `Tpaddings={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ParallelDynamicStitch` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Pow` | `T={complex64,double,float,int32,int64}` `PreventGradient` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Prod` | `Tidx={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `QuantizeAndDequantizeV2` | `T={double,float}` `RFFT` | `RFFT2D` | `RFFT3D` | `RGBToHSV` | `T={double,float}` `Range` | `Tidx={double,float,int32,int64}` `Rank` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ReadVariableOp` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `Real` | `Tout={double,float}`
`T={complex64}` `RealDiv` | `T={complex64,double,float,int32,int64}` `Reciprocal` | `T={complex64,double,float,int32,int64}` `ReciprocalGrad` | `T={complex64,double,float}` `Relu` | `T={double,float,int32,int64,uint32,uint64}` `Relu6` | `T={double,float,int32,int64,uint32,uint64}` `Relu6Grad` | `T={double,float,int32,int64,uint32,uint64}` `ReluGrad` | `T={double,float,int32,int64,uint32,uint64}` `Reshape` | `Tshape={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ResizeBilinear` | `T={double,float,int32,int64}` `ResizeBilinearGrad` | `T={double,float}` `ResourceApplyAdagrad` | `T={double,float}` `ResourceApplyAdam` | `T={double,float}` `ResourceApplyFtrl` | `T={double,float}` `ResourceApplyFtrlV2` | `T={double,float}` `ResourceApplyGradientDescent` | `T={double,float}` `ResourceApplyMomentum` | `T={double,float}` `ResourceApplyRMSProp` | `T={double,float}` `ResourceGather` | `Tindices={int32,int64}`
`dtype={complex64,double,float,int32,int64,uint32,uint64}` `ResourceStridedSliceAssign` | `Index={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Reverse` | `T={bool,complex64,double,float,int32,int64}` `ReverseSequence` | `Tlen={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ReverseV2` | `T={bool,complex64,double,float,int32,int64}`
`Tidx={int32,int64}` `RightShift` | `T={int32,int64,uint32,uint64}` `Rint` | `T={double,float}` `Round` | `T={complex64,double,float,int32,int64}` `Rsqrt` | `T={complex64,double,float}` `RsqrtGrad` | `T={complex64,double,float}` `ScatterNd` | `Tindices={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Select` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Selu` | `T={double,float}` `SeluGrad` | `T={double,float}` `Shape` | `out_type={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `ShapeN` | `out_type={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Sigmoid` | `T={complex64,double,float}` `SigmoidGrad` | `T={complex64,double,float}` `Sign` | `T={complex64,double,float,int32,int64}` `Sin` | `T={complex64,double,float}` `Sinh` | `T={complex64,double,float}` `Size` | `out_type={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Slice` | `Index={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Snapshot` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Softmax` | `T={double,float}` `SoftmaxCrossEntropyWithLogits` | `T={double,float}` `Softplus` | `T={double,float,int32,int64,uint32,uint64}` `SoftplusGrad` | `T={double,float,int32,int64,uint32,uint64}` `Softsign` | `T={double,float,int32,int64,uint32,uint64}` `SoftsignGrad` | `T={double,float,int32,int64,uint32,uint64}` `SpaceToBatch` | `Tpaddings={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `SpaceToBatchND` | `Tblock_shape={int32,int64}`
`Tpaddings={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `SpaceToDepth` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `SparseMatMul` | `Tb={float}`
`Ta={float}` `SparseSoftmaxCrossEntropyWithLogits` | `Tlabels={int32,int64}`
`T={double,float}` `Split` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `SplitV` | `Tlen={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Sqrt` | `T={complex64,double,float}` `SqrtGrad` | `T={complex64,double,float}` `Square` | `T={complex64,double,float,int32,int64}` `SquaredDifference` | `T={complex64,double,float,int32,int64}` `Squeeze` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `StackCloseV2` | `StackPopV2` | `elem_type={bool,complex64,double,float,int32,int64,uint32,uint64}` `StackPushV2` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `StackV2` | `elem_type={bool,complex64,double,float,int32,int64,uint32,uint64}` `StatelessRandomNormal` | `Tseed={int32}`
`T={int32,int64}`
`dtype={float}` `StatelessRandomUniform` | `Tseed={int32}`
`T={int32,int64}`
`dtype={float}` `StopGradient` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `StridedSlice` | `Index={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `StridedSliceGrad` | `Index={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Sub` | `T={complex64,double,float,int32,int64}` `Sum` | `Tidx={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `SymbolicGradient` | `Tout={bool,complex64,double,float,int32,int64,uint32,uint64}`
`Tin={bool,complex64,double,float,int32,int64,uint32,uint64}` `Tan` | `T={complex64,double,float,int32,int64}` `Tanh` | `T={complex64,double,float}` `TanhGrad` | `T={complex64,double,float}` `TensorArrayCloseV3` | `TensorArrayConcatV3` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArrayGatherV3` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArrayGradV3` | `TensorArrayReadV3` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArrayScatterV3` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArraySizeV3` | `TensorArraySplitV3` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArrayV3` | `dtype={bool,complex64,double,float,int32,int64,uint32,uint64}` `TensorArrayWriteV3` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Tile` | `Tmultiples={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `Transpose` | `Tperm={int32,int64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `TruncateDiv` | `T={complex64,double,float,int32,int64}` `TruncateMod` | `T={double,float,int32,int64}` `Unpack` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `UnsortedSegmentSum` | `Tnumsegments={int32,int64}`
`Tindices={int32,int64}`
`T={complex64,double,float,int32,int64,uint32,uint64}` `VarIsInitializedOp` | `VariableShape` | `out_type={int32,int64}` `XlaWhile` | `T={bool,complex64,double,float,int32,int64,resource,uint32,uint64}` `ZerosLike` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `_Arg` | `T={bool,complex64,double,float,int32,int64,resource,uint32,uint64}` `_ArrayToList` | `out_types={bool,complex64,double,float,int32,int64,uint32,uint64}`
`T={bool,complex64,double,float,int32,int64,uint32,uint64}` `_ListToArray` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}`
`Tin={bool,complex64,double,float,int32,int64,uint32,uint64}` `_Retval` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `_XLARecv` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` `_XLASend` | `T={bool,complex64,double,float,int32,int64,uint32,uint64}` To regenerate this table, run: ```shell bazel run -c opt -- tensorflow/compiler/tf2xla:tf2xla_supported_ops --device=XLA_GPU_JIT ```