diff --git a/include/private/SkNx.h b/include/private/SkNx.h
index 67a68e8..5c1b3c0 100644
--- a/include/private/SkNx.h
+++ b/include/private/SkNx.h
@@ -114,7 +114,6 @@
     AI SkNx   sqrt() const { return { fLo.  sqrt(), fHi.  sqrt() }; }
     AI SkNx  rsqrt() const { return { fLo. rsqrt(), fHi. rsqrt() }; }
     AI SkNx  floor() const { return { fLo. floor(), fHi. floor() }; }
-    AI SkNx invert() const { return { fLo.invert(), fHi.invert() }; }
 
     AI SkNx operator!() const { return { !fLo, !fHi }; }
     AI SkNx operator-() const { return { -fLo, -fHi }; }
@@ -224,7 +223,6 @@
     AI SkNx   sqrt() const { return Sqrt(fVal); }
     AI SkNx  rsqrt() const { return T(1) / this->sqrt(); }
     AI SkNx  floor() const { return Floor(fVal); }
-    AI SkNx invert() const { return T(1) / *this; }
 
     AI SkNx operator!() const { return !fVal; }
     AI SkNx operator-() const { return -fVal; }
diff --git a/include/private/SkNx_neon.h b/include/private/SkNx_neon.h
index 6484fcf..202d4c8 100644
--- a/include/private/SkNx_neon.h
+++ b/include/private/SkNx_neon.h
@@ -72,12 +72,6 @@
         vst4_f32((float*) dst, abcd);
     }
 
-    AI SkNx invert() const {
-        float32x2_t est0 = vrecpe_f32(fVec),
-                    est1 = vmul_f32(vrecps_f32(est0, fVec), est0);
-        return est1;
-    }
-
     AI SkNx operator - () const { return vneg_f32(fVec); }
 
     AI SkNx operator + (const SkNx& o) const { return vadd_f32(fVec, o.fVec); }
@@ -196,12 +190,6 @@
         vst4q_f32((float*) dst, rgba);
     }
 
-    AI SkNx invert() const {
-        float32x4_t est0 = vrecpeq_f32(fVec),
-                    est1 = vmulq_f32(vrecpsq_f32(est0, fVec), est0);
-        return est1;
-    }
-
     AI SkNx operator - () const { return vnegq_f32(fVec); }
 
     AI SkNx operator + (const SkNx& o) const { return vaddq_f32(fVec, o.fVec); }
diff --git a/include/private/SkNx_sse.h b/include/private/SkNx_sse.h
index 410832f..d11b184 100644
--- a/include/private/SkNx_sse.h
+++ b/include/private/SkNx_sse.h
@@ -101,7 +101,6 @@
 
     AI SkNx   sqrt() const { return _mm_sqrt_ps (fVec);  }
     AI SkNx  rsqrt() const { return _mm_rsqrt_ps(fVec); }
-    AI SkNx invert() const { return _mm_rcp_ps(fVec); }
 
     AI float operator[](int k) const {
         SkASSERT(0 <= k && k < 2);
@@ -194,7 +193,6 @@
 
     AI SkNx   sqrt() const { return _mm_sqrt_ps (fVec);  }
     AI SkNx  rsqrt() const { return _mm_rsqrt_ps(fVec); }
-    AI SkNx invert() const { return _mm_rcp_ps(fVec); }
 
     AI float operator[](int k) const {
         SkASSERT(0 <= k && k < 4);
diff --git a/tests/SkNxTest.cpp b/tests/SkNxTest.cpp
index 605e802..47a67c4 100644
--- a/tests/SkNxTest.cpp
+++ b/tests/SkNxTest.cpp
@@ -55,8 +55,6 @@
     assert_eq(fours.sqrt(), 2,2,2,2);
     assert_nearly_eq(0.001f, fours.rsqrt(), 0.5, 0.5, 0.5, 0.5);
 
-    assert_nearly_eq(0.001f, fours.invert(), 0.25, 0.25, 0.25, 0.25);
-
     assert_eq(SkNx<N,float>::Min(a, fours), 3, 4, 4, 4);
     assert_eq(SkNx<N,float>::Max(a, fours), 4, 4, 5, 6);
 
