Bug 19217 - [2.26 Regression] ffmpeg test idct8x8 (NEON) fails on ARM32 when built with binutils from the trunk
Summary: [2.26 Regression] ffmpeg test idct8x8 (NEON) fails on ARM32 when built with b...
Status: NEW
Alias: None
Product: binutils
Classification: Unclassified
Component: gas (show other bugs)
Version: 2.26
: P2 normal
Target Milestone: ---
Assignee: mwahab
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-11-06 22:30 UTC by Matthias Klose
Modified: 2015-11-12 11:04 UTC (History)
1 user (show)

See Also:
Host:
Target: arm-linux-gnueabihf
Build:
Last reconfirmed:


Attachments
test case (5.25 KB, text/x-csrc)
2015-11-10 22:59 UTC, Matthias Klose
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Klose 2015-11-06 22:30:03 UTC
the ffmpeg test idct8x8 (NEON) fails when built with binutils from the trunk. The ffmpeg (2.8.1) tests succeed when built with binutils from the 2.25 branch.

TEST    idct8x8
./tests/fate-run.sh fate-idct8x8 "" "" "/home/ubuntu/tmp/ffmpeg-2.8.1" 'run libavcodec/dct-test -i' 'null' '/dev/null' '' '1' '' '' '' ''
 '' '' '' ''
 /home/ubuntu/tmp/ffmpeg-2.8.1/libavcodec/dct-test -i
ffmpeg DCT/IDCT test

      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
      0       0       0       0       0       0       0       0 
IDCT REF-DBL: max_err=0 omse=0.00000000 ome=0.00000000 syserr=0.00000000 maxout=288 blockSumErr=0

     54     -33      10      21      24      33      13      -2 
     23      36      -6       1      12      13      34      33 
      5      37      18      38     -13      41      38      32 
     -4      22      28      11      13      18      10      18 
     -2       9      38     -12      10      18      -5      50 
     32      43       5      23      17      36      25     -11 
     18       9      33      -1      17       3      34     -10 
      5      23      41       0      15      10      23      29 
IDCT INT: max_err=1 omse=0.01303203 ome=0.00086172 syserr=0.00270000 maxout=288 blockSumErr=64

      1     -15      -2       2      -2      -2      -4      14 
    -12      -5       2      -5      -4      -5     -16     -10 
      9      -6       5     -19      -3       7      -4       5 
     -7       5      11     -19     -18     -11      -4      -2 
    -19      -6       4      19      -7      -6      -2      -3 
     -8       9      20     -13      -3      13       9      -6 
     16       8     -17     -11       4     -17       5      -7 
     -7      15      17     -16       1      16      -6      -8 
IDCT SIMPLE-C: max_err=1 omse=0.00675937 ome=-0.00009375 syserr=0.00100000 maxout=288 blockSumErr=64

     19     -18       5      38      75      29       2      47 
     40      77      25      18      30      19     -13      29 
     28      43     -13      31      25      18      -6      32 
     22      48      66      12       8      14      11      25 
      1       3      28       0      22      31      48      55 
     20      17      40       8      45      52      21       4 
     16      28      36       2      45      34      69      33 
     42      21       9      36      -3      17      31      24 
IDCT PR-C: max_err=1 omse=0.02551797 ome=0.00126641 syserr=0.00385000 maxout=288 blockSumErr=64

      2      -3       0       1       2       0       0       1 
     -5      -4      -2       0      -4      -4      -4       1 
      0       1       2      -1       0      -1      -1       3 
      1       1      -2       2      -1       1       1       2 
      2      -1       0      -1       2       1       1       1 
      2      -2      -1       3       2      -2      -2       3 
      2      -2      -1       3       2      -2      -2       3 
      1       1       2       2       1       1       1       2 
IDCT FAANI: max_err=1 omse=0.00046484 ome=0.00000859 syserr=0.00025000 maxout=288 blockSumErr=64

    364     346     377     372     368     377     344     368 
    151     144     125     164     155     166     138     155 
    152     152     143     143     146     149     145     160 
   -129    -140    -116    -131    -152    -133    -124    -122 
   -137    -142    -108    -144    -129    -151    -138    -138 
    203     225     230     223     208     208     204     208 
    225     219     258     200     213     214     244     237 
     52      53      39      29      39      66      32      34 
IDCT XVID: max_err=1 omse=0.01386797 ome=0.00549453 syserr=0.01885000 maxout=288 blockSumErr=48

  -2384     -15  230638       2   21676      -1 -278477      15 
  15651      -3  -87455      -5   -1232      -4   77956     -10 
  28105      -6  -26767     -19  -28995       7   59199       7 
 -13554       5  -18582     -18   48593     -11   -4184      -2 
  12675      -5    5166      19  -30168      -6  -36187      -2 
  20222       9   82445     -12  -20193      13  -59735      -5 
  30518       8   43440     -11  -41067     -17  -18556      -7 
 -27035      15    1879     -16  -16166      16  -40682      -6 
IDCT SIMPLE-ARM: max_err=2019 omse=32415.48331328 ome=-0.05728203 syserr=13.92385000 maxout=2040 blockSumErr=21082

     52     -11       2      21      23      23      32       3 
     21      32      -5       8      11      17      30      35 
     17      37      36      37      -4      26      40      27 
     -3      31      30      14       6      10       7      20 
     -5       7      48     -13      12      26      -3      54 
     30      49      -2      32       7      32      27     -18 
     12       9      36      -5      17      -1      26      -4 
      9      12      27      -1      19      17      20      29 
IDCT INT-ARM: max_err=1 omse=0.01301562 ome=0.00088281 syserr=0.00270000 maxout=288 blockSumErr=64

      1     -15      -2       2      -2      -2      -4      14 
    -12      -5       2      -5      -4      -5     -16     -10 
      9      -6       5     -19      -3       7      -4       5 
     -7       5      11     -19     -18     -11      -4      -2 
    -19      -6       4      19      -7      -6      -2      -3 
     -8       9      20     -13      -3      13       9      -6 
     16       8     -17     -11       4     -17       5      -7 
     -7      15      17     -16       1      16      -6      -8 
IDCT SIMPLE-ARMV5TE: max_err=1 omse=0.00675937 ome=-0.00009375 syserr=0.00100000 maxout=288 blockSumErr=64

      4     -15      -1       2      -2      -1      -4      15 
    -12      -3       3      -5      -4      -4     -16     -10 
      9      -6       5     -19      -3       7      -4       7 
     -5       5      12     -18     -18     -11      -3      -2 
    -19      -5       4      19      -6      -6      -2      -2 
     -8       9      20     -12      -2      13       9      -5 
     18       8     -17     -11       4     -17       7      -7 
     -7      15      17     -16       1      16      -6      -6 
IDCT SIMPLE-ARMV6: max_err=1 omse=0.00675703 ome=-0.00007109 syserr=0.00100000 maxout=288 blockSumErr=64

      1     -15      -2       2      -2      -2      -4      14 
    -12      -5       2      -5      -4      -5     -16     -10 
      9      -6       5     -19      -3       7      -4       5 
     -7       5      11     -19     -18     -11      -4      -2 
    -19      -6       4      19      -7      -6      -2      -3 
     -8       9      20     -13      -3      13       9      -6 
     16       8     -17     -11       4     -17       5      -7 
     -7      15      17     -16       1      16      -6      -8 
IDCT SIMPLE-NEON: max_err=1 omse=0.00675937 ome=-0.00009375 syserr=0.00100000 maxout=288 blockSumErr=64
Error: 1.
Test idct8x8 failed. Look at tests/data/fate/idct8x8.err for details.
tests/Makefile:203: recipe for target 'fate-idct8x8' failed
make[2]: *** [fate-idct8x8] Error 1

The mentioned .err file is empty.
Comment 1 mwahab 2015-11-09 10:40:36 UTC
I'll take a look.
Comment 2 Matthias Klose 2015-11-10 09:04:44 UTC
more info at https://launchpad.net/bugs/1513985
Comment 3 mwahab 2015-11-10 15:24:20 UTC
(In reply to Matthias Klose from comment #2)
> more info at https://launchpad.net/bugs/1513985

Could you add the options used to build the test case, either here or on the other bug report. The command line passed to the ffmpeg configure script should be enough.

Thanks,
Matthew
Comment 4 Matthias Klose 2015-11-10 22:59:08 UTC
Created attachment 8774 [details]
test case

from https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1513985/comments/3

"""
Attached testcase test.S doesn't require compiling ffmpeg, but simply:
$ gcc -g -c -o test.o test.S

Analyzing the difference of 'objdump -d test.o' between variants built with working and broken binutils show that the working binutils always always uses 'ldr.w' for ldr, while the broken version sometimes optimizes this to 'movw', which is a correct alternative, but one time to 'movt', which only sets half of the register."
"""
Comment 5 mwahab 2015-11-12 10:06:46 UTC
This appears to be due to an optimization introduced by PR gas/18499.

The patch submitted to fix it is at https://sourceware.org/ml/binutils/2015-11/msg00072.html.
Comment 6 cvs-commit@gcc.gnu.org 2015-11-12 11:04:28 UTC
The master branch has been updated by Ramana Radhakrishnan <ramana@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=582cfe03cb7496371bc6d83af49b6324d0c36887

commit 582cfe03cb7496371bc6d83af49b6324d0c36887
Author: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Date:   Thu Nov 12 10:50:22 2015 +0000

    Fix PR gas/19217
    
    2015-11-11  Matthew Wahab  <matthew.wahab@arm.com>
    
    	PR gas/19217
    	* config/tc-arm.c (move_or_literal_pool): Remove redundant feature
    	check.  Fix some code formatting.  Drop use of MOVT.  Add some
    	comments.
    
    2015-11-11  Matthew Wahab  <matthew.wahab@arm.com>
    
    	PR gas/19217
            * gas/arm/thumb2_ldr_immediate_armv6t2.d: Update expected output.