Bug 21408

Summary: DAZ related macros are improperly guarded in pmmintrin.h
Product: gcc Reporter: tbp <tbptbp>
Component: targetAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED WONTFIX    
Severity: minor CC: gcc-bugs, hjl.tools
Priority: P2 Keywords: ssemmx
Version: 4.1.0   
Target Milestone: ---   
Host: Target: i?86-*-* x86_64-*-*
Build: Known to work:
Known to fail: Last reconfirmed: 2006-01-26 05:23:39

Description tbp 2005-05-06 00:37:05 UTC
In GCC's version of pmmintrin.h we have:
#ifdef __SSE3__
#include <xmmintrin.h>
#include <emmintrin.h>

/* Additional bits in the MXCSR.  */
#define _MM_DENORMALS_ZERO_MASK		0x0040
#define _MM_DENORMALS_ZERO_ON		0x0040
#define _MM_DENORMALS_ZERO_OFF		0x0000

#define _MM_SET_DENORMALS_ZERO_MODE(mode) \
  _mm_setcsr ((_mm_getcsr () & ~_MM_DENORMALS_ZERO_MASK) | (mode))
#define _MM_GET_DENORMALS_ZERO_MODE() \
  (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)

... and then SSE3 intrinsics.

But those addtionnal MXCSR bits can be found, for example, on a k8 with only SSE2.
Side note: they aren't guarded this way either in Intel headers.
Comment 1 Andrew Pinski 2005-10-25 19:46:53 UTC
Confirmed.
Comment 2 Uroš Bizjak 2008-04-21 08:24:24 UTC
I guess that H.J. will know what shall we do here.
Comment 3 H.J. Lu 2008-04-21 13:30:12 UTC
pmmintrin.h is for SSE3. I don't see anything wrong here. If someone
wants to support SSE3 macros on some processors with SSE2, a new header
file may be used.
Comment 4 Uroš Bizjak 2009-09-17 10:32:54 UTC
So, wontfix.