shithub: dav1d

Download patch

ref: 3a3af969e7b694a02d4ba51c7bf7ab0258724292
parent: 8ff894639bbfaf849f54424f0d8241b076f0fd97
author: Henrik Gramner <gramner@twoorioles.com>
date: Tue Jan 14 15:52:09 EST 2020

x86: Fix missing saturations in inverse identity asm

--- a/src/x86/itx.asm
+++ b/src/x86/itx.asm
@@ -3452,8 +3452,8 @@
     IDTX16                0, 1, 15
     mova                 m1, [rsp+32*0]
     pmulhrsw            m15, m1
-    paddw                m1, m1
-    paddw               m15, m1
+    paddsw               m1, m1
+    paddsw              m15, m1
     jmp m(idct_16x16_internal).end
 
 %define o_base iadst4_dconly2a + 128
--- a/src/x86/itx_ssse3.asm
+++ b/src/x86/itx_ssse3.asm
@@ -880,7 +880,7 @@
     pmulhrsw             m1, m0, [coeffq]
     pmulhrsw             m1, m0
     pmulhrsw             m0, m1, [o(pw_1697x8)]
-    paddw                m1, m0
+    paddsw               m1, m0
     pmulhrsw             m1, [o(pw_2048)]
     punpcklwd            m1, m1
     punpckhdq            m2, m1, m1
@@ -903,7 +903,7 @@
     punpcklqdq           m0, m2
     mova                 m4, [o(pw_2896x8)]
     pmulhrsw             m0, m4
-    paddw                m0, m0
+    paddsw               m0, m0
     pmulhrsw             m0, m4
     pmulhrsw             m0, [o(pw_2048)]
     mova                 m1, m0
@@ -1159,10 +1159,10 @@
     pmulhrsw             m1, m3, [coeffq+16*1]
     pmulhrsw             m2, m3, [coeffq+16*2]
     pmulhrsw             m3,     [coeffq+16*3]
-    paddw                m0, m0
-    paddw                m1, m1
-    paddw                m2, m2
-    paddw                m3, m3
+    paddsw               m0, m0
+    paddsw               m1, m1
+    paddsw               m2, m2
+    paddsw               m3, m3
 
     punpckhwd            m4, m0, m1
     punpcklwd            m0, m1
@@ -1184,10 +1184,10 @@
     pmulhrsw             m5, m7, m1
     pmulhrsw             m6, m7, m2
     pmulhrsw             m7, m3
-    paddw                m0, m4
-    paddw                m1, m5
-    paddw                m2, m6
-    paddw                m3, m7
+    paddsw               m0, m4
+    paddsw               m1, m5
+    paddsw               m2, m6
+    paddsw               m3, m7
     jmp m(iadst_8x4_internal).end
 
 %macro INV_TXFM_8X8_FN 2-3 -1 ; type1, type2, fast_thresh