------- Comment #1 from pinskia at gmail dot com 2010-02-19 16:05 ------- Subject: Re: New: g++ does not allow overloading operators for sse types (__m128, __m128d)
Well there is already a builtin operator+ for vector types with the generic vector support. Sent from my iPhone On Feb 19, 2010, at 7:50 AM, "mr dot nuke dot me at gmail dot com" <gcc-bugzi...@gcc.gnu.org > wrote: > When trying to overload operators for __m128 and __m128d types. For > example, > the following code: > > > #include <xmmintrin.h> > #include <stddef.h> > > inline __m128 operator + (const __m128 A, const __m128 B) > { > return _mm_add_ps(A, B); > } > > int main() > { > float a[4]; > float b[4]; > > for(size_t i = 0; i < 4; i++) > { > a[i] = 2 * i; > b[i] = 2 * i; > } > __m128 sseA, sseB; > sseA = _mm_loadu_ps(a); > sseB = _mm_loadu_ps(b); > __m128 sseSum = sseA + sseB; > return 0; > } > > Generates > error: 'float __vector__ operator+(float __vector__, float > __vector__)' must > have an argument of class or enumerated type > > Compiler options: -O3 -msse > > Both ICL (windows and Linux) and MSVC accept this code and compile it > correctly. > > > -- > Summary: g++ does not allow overloading operators for sse > types > (__m128, __m128d) > Product: gcc > Version: 4.4.3 > Status: UNCONFIRMED > Severity: blocker > Priority: P3 > Component: c++ > AssignedTo: unassigned at gcc dot gnu dot org > ReportedBy: mr dot nuke dot me at gmail dot com > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43122 > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43122