Loading...
--- printflocal.h.orig 2009-11-12 13:40:46.000000000 -0800 +++ printflocal.h 2009-11-12 23:06:25.000000000 -0800 @@ -32,6 +32,11 @@ * $FreeBSD: src/lib/libc/stdio/printflocal.h,v 1.3 2009/03/02 04:07:58 das Exp $ */ +/* + * Defining here VECTORS for all files that include this header (<rdar://problem/8466056>) + */ +#define VECTORS + /* * Flags used during conversion. */ @@ -49,6 +49,9 @@ #define PTRDIFFT 0x800 /* ptrdiff_t */ #define INTMAXT 0x1000 /* intmax_t */ #define CHARINT 0x2000 /* print char using int format */ +#ifdef VECTORS +#define VECTOR 0x4000 /* Altivec or SSE vector */ +#endif /* VECTORS */ /* * Macros for converting digits to letters and vice versa @@ -60,6 +63,13 @@ /* Size of the static argument table. */ #define STATIC_ARG_TBL_SIZE 8 +#ifdef VECTORS +typedef __attribute__ ((vector_size(16))) unsigned char VECTORTYPE; +#ifdef __SSE2__ +#define V64TYPE +#endif /* __SSE2__ */ +#endif /* VECTORS */ + union arg { int intarg; u_int uintarg; @@ -87,6 +97,21 @@ union arg { #endif wint_t wintarg; wchar_t *pwchararg; +#ifdef VECTORS + VECTORTYPE vectorarg; + unsigned char vuchararg[16]; + signed char vchararg[16]; + unsigned short vushortarg[8]; + signed short vshortarg[8]; + unsigned int vuintarg[4]; + signed int vintarg[4]; + float vfloatarg[4]; +#ifdef V64TYPE + double vdoublearg[2]; + unsigned long long vulonglongarg[2]; + long long vlonglongarg[2]; +#endif /* V64TYPE */ +#endif /* VECTORS */ }; /* Handle positional parameters. */ |