[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 273475] Add support for AVX instructions
From:       Gunther Piez <gpiez () web ! de>
Date:       2012-06-19 13:17:30
Message-ID: bug-273475-17878-kep9Do8mvv () http ! bugs ! kde ! org/
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=273475

--- Comment #123 from Gunther Piez <gpiez@web.de> ---
That was fast. The next one is evil.

vex amd64->IR: unhandled instruction bytes: 0xC4 0x42 0x29 0xB 0xD9 0xC4 0xC1
0x79
vex amd64->IR:   REX=0 REX.W=0 REX.R=1 REX.X=0 REX.B=1
vex amd64->IR:   VEX=1 VEX.L=0 VEX.nVVVV=0xA ESC=0F38
vex amd64->IR:   PFX.66=1 PFX.F2=0 PFX.F3=0
==9622== valgrind: Unrecognised instruction at address 0x441de6.
==9622==    at 0x441DE6: Eval::Init::material() (tmmintrin.h:124)
==9622==    by 0x45809A: Eval::Init::setEvalParameters(Parameters const&)
(evalinit.cpp:778)
==9622==    by 0x46DA40: Eval::init(Parameters const&) (eval.cpp:91)
==9622==    by 0x44FD5F: Game::Game(Console*, Parameters const&, unsigned long,
unsigned long) (game.cpp:115)
==9622==    by 0x468559: Console::init(int&, char**) (console.cpp:78)
==9622==    by 0x427D79: main (main.cpp:28)

  441de6:       c4 42 29 0b d9          vpmulhrsw %xmm9,%xmm10,%xmm11
  441deb:       c4 c1 79 c5 eb 01       vpextrw $0x1,%xmm11,%ebp
  441df1:       c4 c1 79 c5 d3 00       vpextrw $0x0,%xmm11,%edx

I shouldn't have used this, I knew it would hurt me later :-) It actually does
give a nice speedup, but fortunately for valgrind testing I can easily disable
it. It comes from this code

    #ifdef __SSSE3__
        // The SSE version loses half a bit of precision, because is rounds
first
        // and then sums up, where the normal code rounds last.
        __v8hi score16 = _mm_mulhrs_epi16(weights.data, score.data);
        int16_t s0 = _mm_extract_epi16( score16, 0 ) + _mm_extract_epi16(
score16, 1 );
        return s0;
    #else    
        int o = weights.opening();
        int e = weights.endgame();
        int s = (o*score.opening() + e*score.endgame() + 0x4000) >> 15;
        ASSERT(s==s0);
        return s;
    #endif

If I disable the SSSE3 path, the next stop ist at

vex amd64->IR: unhandled instruction bytes: 0xC4 0xE2 0x79 0x17 0xDA 0x49 0x8B
0x48
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=1 VEX.L=0 VEX.nVVVV=0x0 ESC=0F38
vex amd64->IR:   PFX.66=1 PFX.F2=0 PFX.F3=0
==12207== valgrind: Unrecognised instruction at address 0x443236

which is
  443236:       c4 e2 79 17 da          vptest %xmm2,%xmm3

-- 
You are receiving this mail because:
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic