]> git.nihav.org Git - nihav.git/commitdiff
h264: renumber labels in assembly to avoid 0 and 1
authorKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 10 Apr 2025 16:07:48 +0000 (18:07 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 10 Apr 2025 16:07:48 +0000 (18:07 +0200)
They may be potentially misinterpreted by LLVM

nihav-itu/src/codecs/h264/cabac_coder.rs
nihav-itu/src/codecs/h264/dsp/mod.rs

index 2ff09e27f85062a5f0bbe93758b60bff26119315..c41928b9a128a7aef0944618e4dfb6afbf9ab5c0 100644 (file)
@@ -182,23 +182,23 @@ impl<'a> CABAC<'a> {
                 // determine bit value
                 "mov    {tmp:x},        word ptr [{ctx} + 0x41A]",
                 "cmp    {tmp:x},        word ptr [{ctx} + 0x418]",
-                "jl     1f",
+                "jl     2f",
                 "sub    {tmp:x},        word ptr [{ctx} + 0x418]",
                 "mov    word ptr [{ctx} + 0x418], {range_lps:x}",
                 "mov    word ptr [{ctx} + 0x41A], {tmp:x}",
                 "xor    {bit:l},        0x80",
-                "1:",
+                "2:",
                 // update state[idx]
                 "cmp    {bit:x},        {val_mps:x}",
-                "jne    2f",
+                "jne    3f",
                 "lea    {tmp},          {trans_idx_mps}[rip]",
-                "jmp    3f",
-                "2:",
+                "jmp    4f",
+                "3:",
                 "lea    {tmp},          {trans_idx_lps}[rip]",
                 "cmp    {state_idx},    0",
-                "jnz    3f",
+                "jnz    4f",
                 "xor    {val_mps:x},    0x80",
-                "3:",
+                "4:",
                 "movzx  {tmp},          byte ptr [{tmp} + {state_idx}]",
                 "or     {tmp:x},        {val_mps:x}",
                 "mov    byte ptr [{ctx} + 0x18 + {idx}], {tmp:l}",
index a2a58a45dbf8a14b702598d06834eafa28413d56..c0d61042c26897185bc8776c4693bbc651daa067 100644 (file)
@@ -1021,7 +1021,7 @@ fn check_filter4(buf: &[u8], off: usize, step: usize, stride: usize, alpha: i16,
 
             // transpose block if necessary so it's always processed by rows
             "test       {tflag:e}, {tflag:e}",
-            "jz         1f",
+            "jz         2f",
             "punpcklwd  xmm0, xmm1",
             "movhlps    xmm4, xmm0",
             "punpcklwd  xmm2, xmm3",
@@ -1031,7 +1031,7 @@ fn check_filter4(buf: &[u8], off: usize, step: usize, stride: usize, alpha: i16,
             "movhlps    xmm1, xmm0",
             "movhlps    xmm3, xmm4",
             "movaps     xmm2, xmm4",
-            "1:",
+            "2:",
 
             // calculate deltas and flags
             "movd       xmm4, {alpha:r}",