Changeset ae7273d20f50ce62af7f7a27c86103813b0cf92d

Show
Ignore:
Timestamp:
20/09/05 02:11:35 (3 years ago)
Author:
Sam Hocevar <sam@videolan.org>
git-committer:
Sam Hocevar <sam@videolan.org> 1127175095 +0000
git-parent:

[b9730ddde01a6c1f9d0f531133292799ef5396b5]

git-author:
Sam Hocevar <sam@videolan.org> 1127175095 +0000
Message:
  • modules/video_chroma/i420_rgb_mmx.h: work around a GCC 3.4.x bug.
    /* Using i586-mingw32msvc-gcc 3.4.2: */
    uint32_t i; m64 mm0 = (m64)(uint64_t)i; /* ICE */
    uint32_t i; uint64_t tmp = i; m64 mm0 = (m64)tmp; /* OK */
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/video_chroma/i420_rgb16.c

    r9da3197 rae7273d  
    284284#   if defined (HAVE_MMX_INTRINSICS) 
    285285                __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; 
     286                uint64_t tmp64; 
    286287                INTRINSICS_INIT_16 
    287288                INTRINSICS_YUV_MUL 
     
    312313#   if defined (HAVE_MMX_INTRINSICS) 
    313314                __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; 
     315                uint64_t tmp64; 
    314316                INTRINSICS_INIT_16 
    315317                INTRINSICS_YUV_MUL 
     
    342344#   if defined (HAVE_MMX_INTRINSICS) 
    343345            __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; 
     346            uint64_t tmp64; 
    344347#   endif 
    345348#endif 
     
    497500#   if defined (HAVE_MMX_INTRINSICS) 
    498501            __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; 
     502            uint64_t tmp64; 
    499503            INTRINSICS_INIT_32 
    500504            INTRINSICS_YUV_MUL 
     
    526530#   if defined (HAVE_MMX_INTRINSICS) 
    527531            __m64 mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; 
     532            uint64_t tmp64; 
    528533#   endif 
    529534#endif 
  • modules/video_chroma/i420_rgb_mmx.h

    r9da3197 rae7273d  
    5555 
    5656#define INTRINSICS_INIT_16 \ 
    57     mm0 = (__m64)(uint64_t)*(uint32_t *)p_u; \ 
    58     mm1 = (__m64)(uint64_t)*(uint32_t *)p_v; \ 
     57    tmp64 = *(uint32_t *)p_u; \ 
     58    mm0 = (__m64)tmp64; \ 
     59    tmp64 = *(uint32_t *)p_v; \ 
     60    mm1 = (__m64)tmp64; \ 
    5961    mm4 = (__m64)(uint64_t)0; \ 
    6062    mm6 = (__m64)*(uint64_t *)p_y; \ 
     
    7577 
    7678#define INTRINSICS_INIT_32 \ 
    77     mm0 = (__m64)(uint64_t)*(uint32_t *)p_u; \ 
     79    tmp64 = *(uint32_t *)p_u; \ 
     80    mm0 = (__m64)tmp64; \ 
    7881    *(uint16_t *)p_buffer = 0; \ 
    79     mm1 = (__m64)(uint64_t)*(uint32_t *)p_v; \ 
     82    tmp64 = *(uint32_t *)p_v; \ 
     83    mm1 = (__m64)tmp64; \ 
    8084    mm4 = (__m64)(uint64_t)0; \ 
    8185    mm6 = (__m64)*(uint64_t *)p_y; 
     
    291295    mm2 = _mm_slli_pi16(mm2, 2); \ 
    292296    mm0 = _mm_or_si64(mm0, mm2); \ 
    293     mm6 = (__m64)*(uint64_t *)(p_y + 8); \ 
     297    tmp64 = *(uint64_t *)(p_y + 8); \ 
     298    mm6 = (__m64)tmp64; \ 
    294299    *(uint64_t *)p_buffer = (uint64_t)mm0; \ 
    295300    \ 
     
    297302    mm5 = _mm_unpackhi_pi8(mm5, mm1); \ 
    298303    mm7 = _mm_slli_pi16(mm7, 2); \ 
    299     mm0 = (__m64)(uint64_t)*(uint32_t *)(p_u + 4); \ 
     304    tmp64 = (uint64_t)*(uint32_t *)(p_u + 4); \ 
     305    mm0 = (__m64)tmp64; \ 
    300306    mm5 = _mm_or_si64(mm5, mm7); \ 
    301     mm1 = (__m64)(uint64_t)*(uint32_t *)(p_v + 4); \ 
     307    tmp64 = (uint64_t)*(uint32_t *)(p_v + 4); \ 
     308    mm1 = (__m64)tmp64; \ 
    302309    *(uint64_t *)(p_buffer + 4) = (uint64_t)mm5; 
    303310