func.func @i8() {
  %min = util.unfoldable_constant dense<[0, 0, 0, 0]> : tensor<4xi8>
  %val = util.unfoldable_constant dense<[-2, 4, 8, 12]> : tensor<4xi8>
  %max = util.unfoldable_constant dense<[10, 10, 10, 10]> : tensor<4xi8>
  %result = "mhlo.clamp"(%min, %val, %max) : (tensor<4xi8>, tensor<4xi8>, tensor<4xi8>) -> tensor<4xi8>
  check.expect_eq_const(%result, dense<[0, 4, 8, 10]> : tensor<4xi8>) : tensor<4xi8>
  return
}

func.func @i16() {
  %min = util.unfoldable_constant dense<[0, 0, 0, 0]> : tensor<4xi16>
  %val = util.unfoldable_constant dense<[-2, 4, 8, 12]> : tensor<4xi16>
  %max = util.unfoldable_constant dense<[10, 10, 10, 10]> : tensor<4xi16>
  %result = "mhlo.clamp"(%min, %val, %max) : (tensor<4xi16>, tensor<4xi16>, tensor<4xi16>) -> tensor<4xi16>
  check.expect_eq_const(%result, dense<[0, 4, 8, 10]> : tensor<4xi16>) : tensor<4xi16>
  return
}

func.func @i32() {
  %min = util.unfoldable_constant dense<[0, 0, 0, 0]> : tensor<4xi32>
  %val = util.unfoldable_constant dense<[-2, 4, 8, 12]> : tensor<4xi32>
  %max = util.unfoldable_constant dense<[10, 10, 10, 10]> : tensor<4xi32>
  %result = "mhlo.clamp"(%min, %val, %max) : (tensor<4xi32>, tensor<4xi32>, tensor<4xi32>) -> tensor<4xi32>
  check.expect_eq_const(%result, dense<[0, 4, 8, 10]> : tensor<4xi32>) : tensor<4xi32>
  return
}

func.func @f32() {
  %min = util.unfoldable_constant dense<[0.0, 0.0, 0.0, 0.0]> : tensor<4xf32>
  %val = util.unfoldable_constant dense<[-2.0, 4.0, 8.0, 12.0]> : tensor<4xf32>
  %max = util.unfoldable_constant dense<[10.0, 10.0, 10.0, 10.0]> : tensor<4xf32>
  %result = "mhlo.clamp"(%min, %val, %max) : (tensor<4xf32>, tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
  check.expect_eq_const(%result, dense<[0.0, 4.0, 8.0, 10.0]> : tensor<4xf32>) : tensor<4xf32>
  return
}
