This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/43308] [4.5 Regression] internal compiler error: in simplify_binary_operation_1
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Mar 2010 19:41:48 -0000
- Subject: [Bug debug/43308] [4.5 Regression] internal compiler error: in simplify_binary_operation_1
- References: <bug-43308-16437@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from pinskia at gcc dot gnu dot org 2010-03-09 19:41 -------
Reduced 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);
}
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
GCC build triplet|i686-gnu-linux |
GCC host triplet|i686-gnu-linux |
GCC target triplet|i686-gnu-linux |i?86-gnu-linux
Last reconfirmed|0000-00-00 00:00:00 |2010-03-09 19:41:48
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43308