[gstreamer-bugs] [Bug 584174] Problems with tvtime assembler

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Tue Jun 2 15:26:19 PDT 2009


If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=584174

  GStreamer | gst-plugins-good | Ver: 0.10.26

Brian Cameron changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEEDINFO




------- Comment #5 from Brian Cameron  2009-06-02 22:26 UTC -------

Ignore the "inline extern int" issue for now.  Based on discussions with the
Sun Studio compiler team, I am fairly sure this is a Sun Studio compiler bug.

However, we are having more problems compiling the deinterlace assembler code.
When compiling linear.c, I see these errors:

ube: Sun Compiler Common 12.1 SunOS_i386 2009/04/15

assertion failed in function gra_renumber_instrs() @ gra.c:7962
assert(mit_dest_reg_kind_(lf_op_(curr_instr)) == B_REGISTER)

cc: ube failed for linear.c

In talking with the Sun Studio team, they suspect that this problem is caused
by these lines in deinterlace_scanline_linear_mmxext:

    movntq_r2m (mm0, *out);
    movntq_r2m (mm2, *(out + 8));
    movntq_r2m (mm4, *(out + 16));
    movntq_r2m (mm6, *(out + 24));

This gets translated to lines like:

    __asm__ __volatile__ ( "movntq" " %%" "mm0" ", %0" : "=X" ( * out ) : );

Note that X-constraint means "Any operand whatsoever is allowed." (from
gcc.gnu.org)

This is not true: "movntq" accept a *memory* operand only.

The fact that gcc generate correct code is accidental: if you try to build
absolutely equivalent code then you will get the same errors even with gcc

    char ch_out = *out;
    __asm__ __volatile__ ( "movntq" " %%" "mm0" ", %0" : "=X" ( ch_out ) : );
    *out = ch_out;

We have different behavior with gcc and SunStudio because SunStudio in some
cases does not organize access to arguments optimally.

This is way above my head, and I am hoping that the GStreamer maintainers may
have an idea about how to fix this?Thanks for taking the time to report this
bug.


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=584174.




More information about the Gstreamer-bugs mailing list