message: Prefer to match BackwardInput convolution.
  Sometimes a convolution can be both matched as a backward input convolution and
  a backward filter convolution. If we match it as backward input convolution, we
  can replace the reverse operation also with the cudnn call.
diff: @@ -504,6 +504,13 @@ StatusOr<bool> RunOnInstruction(HloInstruction* conv) {
  ConvolutionDimensionNumbers dnums;
  HloInstruction* rhs;
  + std::tie(match, window, dnums, rhs) = MatchBackwardInput(conv);
  + if (match) {
  + return CreateCudnnConv(kCudnnConvBackwardInputCallTarget, conv->shape(),
  + conv->mutable_operand(0), rhs, window, dnums,
  + conv->feature_group_count(), conv->metadata());
  + }
  +
  std::tie(match, window, dnums) = MatchBackwardFilter(conv);
  if (match) {
  return CreateCudnnConv(kCudnnConvBackwardFilterCallTarget, conv->shape(),
  @@ -512,13 +519,6 @@ StatusOr<bool> RunOnInstruction(HloInstruction* conv) {
  conv->metadata());
  }
  - std::tie(match, window, dnums, rhs) = MatchBackwardInput(conv);
  - if (match) {
  - return CreateCudnnConv(kCudnnConvBackwardInputCallTarget, conv->shape(),
  - conv->mutable_operand(0), rhs, window, dnums,
  - conv->feature_group_count(), conv->metadata());
  - }
  -
  // If all else fails, try a forward convolution.
  if (CanImplementAsCudnnForwardConv(conv)) {
  return CreateCudnnConv(kCudnnConvForwardCallTarget, conv->shape(),
  