diff --git a/libavcodec/aarch64/vp9lpf_neon.S b/libavcodec/aarch64/vp9lpf_neon.S
index e9c7d9edc8029d5be171bfaf81aa3a25814649fc..3b8e6ebc99bea5026efac89f859bc458a87573c5 100644
--- a/libavcodec/aarch64/vp9lpf_neon.S
+++ b/libavcodec/aarch64/vp9lpf_neon.S
@@ -292,7 +292,7 @@
 .if \mix != 0
         sxtl            v1.8h,  v1.8b
 .endif
-        cmhi            v5\sz,  v5\sz,  v3\sz  // hev
+        cmhs            v5\sz,  v3\sz,  v5\sz  // !hev
 .if \wd == 8
         // If a 4/8 or 8/4 mix is used, clear the relevant half of v6
 .if \mix != 0
@@ -306,11 +306,10 @@
 .elseif \wd == 8
         bic             v4\sz,  v4\sz,  v6\sz  // fm && !flat8in
 .endif
-        mvn             v5\sz,  v5\sz          // !hev
+        and             v5\sz,  v5\sz,  v4\sz  // !hev && fm && !flat8in
 .if \wd == 16
         and             v7\sz,  v7\sz,  v6\sz  // flat8out && flat8in && fm
 .endif
-        and             v5\sz,  v5\sz,  v4\sz  // !hev && fm && !flat8in
 
         mul_sz          \tmp3\().8h,  \tmp4\().8h,  \tmp3\().8h, \tmp4\().8h,  \tmp5\().8h,  \tmp5\().8h, \sz // 3 * (q0 - p0)
         bic             \tmp1\sz,  \tmp1\sz,  v5\sz    // if (!hev) av_clip_int8 = 0
diff --git a/libavcodec/arm/vp9lpf_neon.S b/libavcodec/arm/vp9lpf_neon.S
index fbf2901f75052d35e770d94a6e9fa765ebca12b3..c57c0e9c31e19f7f58315caacecf307769b4d70c 100644
--- a/libavcodec/arm/vp9lpf_neon.S
+++ b/libavcodec/arm/vp9lpf_neon.S
@@ -141,7 +141,7 @@
 .if \wd == 8
         vcle.u8         d6,  d6,  d0            @ flat8in
 .endif
-        vcgt.u8         d5,  d5,  d3            @ hev
+        vcle.u8         d5,  d5,  d3            @ !hev
 .if \wd == 8
         vand            d6,  d6,  d4            @ flat8in && fm
 .endif
@@ -151,11 +151,10 @@
 .elseif \wd == 8
         vbic            d4,  d4,  d6            @ fm && !flat8in
 .endif
-        vmvn            d5,  d5                 @ !hev
+        vand            d5,  d5,  d4            @ !hev && fm && !flat8in
 .if \wd == 16
         vand            d7,  d7,  d6            @ flat8out && flat8in && fm
 .endif
-        vand            d5,  d5,  d4            @ !hev && fm && !flat8in
 
         vmul.s16        \tmpq2,  \tmpq2, \tmpq3 @ 3 * (q0 - p0)
         vbic            \tmp1,   \tmp1,   d5    @ if (!hev) av_clip_int8 = 0