This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/43308] [4.5 Regression] internal compiler error: in simplify_binary_operation_1



------- Comment #5 from pinskia at gcc dot gnu dot org  2010-03-09 19:55 -------
C testcase:
#include <x86intrin.h>
typedef __m64 m64;
static inline m64 alpha(m64 x) {
  x = _mm_unpackhi_pi16(x, x);
  x = _mm_unpackhi_pi16(x, x);
  return x;
}
static inline m64 _byte_mul(const m64 a, const m64 b, const m64 mmx_0x0080){
  m64 res = _mm_mullo_pi16(a, b);
  return _mm_srli_pi16(res, 8);
}
static inline m64 _load(unsigned x, const m64 mmx_0x0000) {
  return _mm_unpacklo_pi8(_mm_cvtsi32_si64(x), mmx_0x0000);
}
static inline unsigned _store(const m64 x, const m64 mmx_0x0000) {
  return _mm_cvtsi64_si32(_mm_packs_pu16(x, mmx_0x0000));
}
void comp_func_solid_SourceOver(unsigned *dest, unsigned src)
{
  const m64 mmx_0x00ff = _mm_set1_pi16(0xff);
  const m64 mmx_0x0080 = _mm_set1_pi16(0x80);
  const m64 mmx_0x0000 = _mm_setzero_si64();
  m64 s = _load(src, mmx_0x0000);
  m64 a = _mm_xor_si64(alpha(s), mmx_0x00ff);
  *dest =  _store(_mm_adds_pu16(s, _byte_mul(_load(*dest, mmx_0x0000), a,
mmx_0x0080)), mmx_0x0000);
}
--- CUT ---
This is a dup of bug 43304

*** This bug has been marked as a duplicate of 43304 ***


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |DUPLICATE


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43308


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]