code: def _gpu_lstm(
      x,
      init_h,
      init_c,
      kernel,
      recurrent_kernel,
      bias,
      recurrent_bias,
      time_major,
  ):
      if not time_major:
          x = tf.transpose(x, perm=(1, 0, 2))
  
      init_h = tf.expand_dims(init_h, axis=0)
      init_c = tf.expand_dims(init_c, axis=0)
  
      weights = tf.split(kernel, 4, axis=1)
      weights += tf.split(recurrent_kernel, 4, axis=1)
      full_bias = tf.concat((recurrent_bias, bias), axis=0)
      params = _format_weights_for_gpu(
          weights=weights,
          biases=tf.split(full_bias, 8),
          shape=tf.constant([-1]),
      )
      outputs, h, c, _ = tf.raw_ops.CudnnRNN(
          input=x,
          input_h=init_h,
          input_c=init_c,
          params=params,
          rnn_mode="lstm",
      )
      return outputs, (h, c)
  
imports: from typing import Optional, Tuple, Union, Sequence
  import tensorflow
  from tensorflow.python.types.core import Tensor
  import ivy
  from ivy.func_wrapper import with_supported_dtypes, with_unsupported_dtypes
  from .None import backend_version
  from ivy.functional.ivy.layers import _deconv_length, _get_x_data_format
label_desc: Use image node_id 18 for calling a global function with example usage: _gpu_lstm(x, init_h, init_c, kernel, recurrent_kernel, bias, recurrent_bias, time_major) and returns: outputs,  h,  c