[Mesa-dev] Mesa (master): r600g: Use default mul/mad function for tgsi-to-llvm

Michel Dänzer michel at daenzer.net
Thu Dec 6 08:08:07 PST 2012

On Mit, 2012-12-05 at 09:32 -0800, Vincent Lejeune wrote: 
> Module: Mesa
> Branch: master
> Commit: 0ad1fefd6951aa47ab58a41dc9ee73083cbcf85c
> URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ad1fefd6951aa47ab58a41dc9ee73083cbcf85c
> Author: Vincent Lejeune <vljn at ovi.com>
> Date:   Wed Nov 28 00:35:55 2012 +0100
> r600g: Use default mul/mad function for tgsi-to-llvm

This change breaks the piglit tests glsl-{f,v}s-vec4-indexing-temp-src
on radeonsi. I suspect the same would be true with r600g as well if it
didn't fall back to the non-LLVM backend for this test.

Comparing the generated code, I've noticed two main differences so far:

      * LLVM now optimizes away some TGSI MUL operations with constant
        1.0, which previously resulted in V_MUL_LEGACY_F32 (non-IEEE
        semantics) instructions. 
      * V_MUL_F32 and V_ADD_F32 (IEEE semantics) are used instead of
        V_MAD_LEGACY_F32 (non-IEEE semantics) in some places.

I suspect the problem is a (non-)IEEE semantics mismatch between TGSI
and LLVM introduced by this change.

BTW, some general issues with this commit:

The prefix 'r600g:' is misleading, as this change affects radeonsi as
well. I think we've usually used 'radeon/llvm:' for changes

There is no rationale for this change in the commit log: What is the
intended effect? Why is it a good idea? ...

Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer

More information about the mesa-dev mailing list