 /// Each element of the result is the maximum of the corresponding elements
 /// of the inputs.
 @_alwaysEmitIntoClient
-public func max<V>(_ lhs: V, _ rhs: V) -> V
-where V: SIMD, V.Scalar: Comparable {
-  var result = V()
+public func pointwiseMax<T>(_ a: T, _ b: T) -> T
+where T: SIMD, T.Scalar: FloatingPoint {
+  var result = T()
   for i in result.indices {
-    result[i] = max(lhs[i], rhs[i])
+    result[i] = T.Scalar.maximum(a[i], b[i])
   }
   return result
 }
-
-
-/// The lanewise minimum of two vectors.
-///
-/// Each element of the result is the minimum of the corresponding elements
-/// of the inputs.
-@_alwaysEmitIntoClient
-public func min<V>(_ lhs: V, _ rhs: V) -> V
-where V: SIMD, V.Scalar: FloatingPoint {
-  var result = V()
-  for i in result.indices {
-    result[i] = V.Scalar.minimum(lhs[i], rhs[i])
-  }
-  return result
-}
-
-/// The lanewise maximum of two vectors.
-///
-/// Each element of the result is the maximum of the corresponding elements
-/// of the inputs.
-@_alwaysEmitIntoClient
-public func max<V>(_ lhs: V, _ rhs: V) -> V
-where V: SIMD, V.Scalar: FloatingPoint {
-  var result = V()
-  for i in result.indices {
-    result[i] = V.Scalar.maximum(lhs[i], rhs[i])
-  }
-  return result
-}
-*/

  @_alwaysEmitIntoClient
  public static var one: Self {
    return Self(repeating: 1)
  }
}



  @_alwaysEmitIntoClient
  public func clamped(lowerBound: Self, upperBound: Self) -> Self {
    return pointwiseMin(upperBound, pointwiseMax(lowerBound, self))
  }
}

extension SIMD where Scalar: FixedWidthInteger {
