public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
[not found] <bug-39840-4@http.gcc.gnu.org/bugzilla/>
@ 2021-11-29 6:47 ` pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-11-29 6:47 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
Bug 39840 depends on bug 37565, which changed state.
Bug 37565 Summary: __optimize__ attribute doesn't work correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37565
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
[not found] <bug-39840-4@http.gcc.gnu.org/bugzilla/>
2021-11-29 6:47 ` [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics pinskia at gcc dot gnu.org
@ 2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-03-20 6:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |5.0
Status|UNCONFIRMED |RESOLVED
Resolution|--- |FIXED
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
GCC has support turning on/off target specific extensions since at least GCC 5,
maybe earlier. So closing as fixed.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
[not found] <bug-39840-4@http.gcc.gnu.org/bugzilla/>
2021-11-29 6:47 ` [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
@ 2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-03-20 6:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #9)
> GCC has support turning on/off target specific extensions since at least GCC
> 5, maybe earlier. So closing as fixed.
I Mean on specific on a per function level (via either the #pragma or the
target attribute).
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
` (6 preceding siblings ...)
2009-04-22 9:37 ` rguenth at gcc dot gnu dot org
@ 2009-04-22 13:58 ` hjl dot tools at gmail dot com
7 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-04-22 13:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from hjl dot tools at gmail dot com 2009-04-22 13:58 -------
(In reply to comment #7)
> The problem with different instruction sets in different BBs is also how to
> avoid code motion across them. IMNSHO this is a bad idea.
>
I agree. There are too many issues with it. I'd like to see
function level optimization work properly for all cases.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
` (5 preceding siblings ...)
2009-04-21 21:57 ` hjl dot tools at gmail dot com
@ 2009-04-22 9:37 ` rguenth at gcc dot gnu dot org
2009-04-22 13:58 ` hjl dot tools at gmail dot com
7 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-22 9:37 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from rguenth at gcc dot gnu dot org 2009-04-22 09:36 -------
The problem with different instruction sets in different BBs is also how to
avoid code motion across them. IMNSHO this is a bad idea.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
` (4 preceding siblings ...)
2009-04-21 20:34 ` hjl dot tools at gmail dot com
@ 2009-04-21 21:57 ` hjl dot tools at gmail dot com
2009-04-22 9:37 ` rguenth at gcc dot gnu dot org
2009-04-22 13:58 ` hjl dot tools at gmail dot com
7 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-04-21 21:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from hjl dot tools at gmail dot com 2009-04-21 21:56 -------
Created an attachment (id=17668)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17668&action=view)
An eample
Here is an example for gcc 4.4. If function level optimization works,
we don't need separate files for AVX and SSE3.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
` (3 preceding siblings ...)
2009-04-21 19:51 ` drepper at redhat dot com
@ 2009-04-21 20:34 ` hjl dot tools at gmail dot com
2009-04-21 21:57 ` hjl dot tools at gmail dot com
` (2 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-04-21 20:34 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from hjl dot tools at gmail dot com 2009-04-21 20:34 -------
Created an attachment (id=17667)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17667&action=view)
An example
I am enclosing a modified example which can be compiled with both
icc and gcc. I also included assembly codes generated by "icc -O2"
and "gcc -avx -O2". Icc generates:
54: c5 ff 7c c8 vhaddps %ymm0,%ymm0,%ymm1
58: c5 f7 7c d1 vhaddps %ymm1,%ymm1,%ymm2
5c: c5 ef 7c da vhaddps %ymm2,%ymm2,%ymm3
60: c5 fc 29 5c 24 e0 vmovaps %ymm3,-0x20(%rsp)
66: f3 0f 10 44 24 e0 movss -0x20(%rsp),%xmm0
for
if (has_avx ())
{
...
}
There is
f3 0f 10 44 24 e0 movss -0x20(%rsp),%xmm0
although this code will only run on AVX targets. Since we don't
support basic block optimization, I don't see how we can avoid
SSE instructions in AVX code path. The best option I can think
of is function level optimization. But as we all know, function
level optimization isn't usable, as least in this context. I
think we should go back and another look at function level
optimization. We should do it right this time. I have some
ideas in
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37565
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
` (2 preceding siblings ...)
2009-04-21 19:42 ` pinskia at gmail dot com
@ 2009-04-21 19:51 ` drepper at redhat dot com
2009-04-21 20:34 ` hjl dot tools at gmail dot com
` (3 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: drepper at redhat dot com @ 2009-04-21 19:51 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from drepper at redhat dot com 2009-04-21 19:51 -------
(In reply to comment #3)
> Gcc 4.4 and above supports different target options on the function
> level but not on a basic block level. So you can create an interneral
> version for AVX.
This doesn't work either. Aside from being also impractical.
First, you'd have to switch to AVX mode, in this case, to include
<immintrin.h>. How do you switch back to what was used before? How to even
determine it?
Even if you can, try it, and you'll see that gcc is horribly broken when it
comes to the target("...") attributes. In the current Fedora 11 compiler (4.4)
all target options are apparently turned off and none of the intrinsics work at
all.
Even if the necessary support would be added and the bugs fixed it still
differs from icc (where all this comes from) and not in a nice way. To the
contrary, it's much, much more complicated.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
2009-04-21 19:08 ` [Bug middle-end/39840] " hjl dot tools at gmail dot com
2009-04-21 19:38 ` drepper at redhat dot com
@ 2009-04-21 19:42 ` pinskia at gmail dot com
2009-04-21 19:51 ` drepper at redhat dot com
` (4 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: pinskia at gmail dot com @ 2009-04-21 19:42 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gmail dot com 2009-04-21 19:41 -------
Subject: Re: Non-optimal (or wrong) implementation of SSE intrinsics
Gcc 4.4 and above supports different target options on the function
level but not on a basic block level. So you can create an interneral
version for AVX.
Sent from my iPhone
On Apr 21, 2009, at 12:37 PM, "drepper at redhat dot com"
<gcc-bugzilla@gcc.gnu.org
> wrote:
>
>
> ------- Comment #2 from drepper at redhat dot com 2009-04-21 19:37
> -------
> [I couldn't attach the code as an attachment, bugzilla has a bug.]
>
> The program below has to be compiled with -mavx to allow the AVX
> intrinsics
> being used. But this also triggers using the use of the vmovss
> instruction to
> load the parameter for the sin() call from memory.
>
> (Forget the reference to memset in the original report, it's as
> simple as
> passing floating point parameters that triggers the problem.)
>
> #include <math.h>
> #include <stdio.h>
> #include <immintrin.h>
>
>
> static unsigned int eax, ebx, ecx, edx;
>
>
> static int
> has_avx (void)
> {
> if ((ecx & (1 << 27)) == 0)
> /* No OSXSAVE. */
> return 0;
>
> unsigned int feat_eax, feat_edx;
> asm ("xgetbv" : "=a" (feat_eax), "=d" (feat_edx) : "c" (0));
> if ((feat_eax & 6) != 6)
> return 0;
>
> return (ecx & (1 << 28)) != 0;
> }
>
>
> template <typename T, int N>
> struct vec {
> union {
> T n[N];
> __v4sf f[N / (sizeof (__v4sf) / sizeof (T))];
> __v8sf fa[N / (sizeof (__v8sf) / sizeof (T))];
> };
> };
>
>
> template <typename T, int N>
> T
> optscalar(const vec<T,N> &src1, const vec<T,N> &src2)
> {
> T r = 0;
> for (int i = 0; i < N; ++i)
> r += src1[i] * src2[i];
> return r;
> }
>
>
> template <int N>
> float
> optscalar(const vec<float,N> &src1, const vec<float,N> &src2)
> {
> if (has_avx ())
> {
> __m256 tmp = _mm256_setzero_ps ();
> for (int i = 0; i < N / 8; ++i)
> tmp = _mm256_add_ps (tmp, _mm256_mul_ps (src1.fa[i],
> src2.fa[i]));
> tmp = _mm256_hadd_ps (tmp, tmp);
> tmp = _mm256_hadd_ps (tmp, tmp);
> tmp = _mm256_hadd_ps (tmp, tmp);
> union
> {
> __m256 v;
> float a[8];
> } cvt = { tmp };
> return cvt.a[0];
> }
> else
> {
> __m128 tmp = _mm_setzero_ps ();
> for (int i = 0; i < N / 4; ++i)
> tmp = _mm_add_ps (tmp, _mm_mul_ps (src1.f[i], src2.f[i]));
> tmp = _mm_hadd_ps (tmp, tmp);
> tmp = _mm_hadd_ps (tmp, tmp);
> return __builtin_ia32_vec_ext_v4sf (tmp, 0);
> }
> }
>
>
> #define N 100000
> #define DEF(type) vec<type,N> v##type##1, v##type##2; type
> type##res, type##cmp
> DEF(float);
>
> float g;
>
> int
> main ()
> {
> float f = sinf (g);
> printf ("%g\n", f);
>
> asm volatile ("cpuid"
> : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
> : "0" (1));
>
> float floatres = optscalar (vfloat1, vfloat2);
> printf ("%g\n", floatres);
>
> return 0;
> }
>
>
> --
>
> drepper at redhat dot com changed:
>
> What |Removed |Added
> ---
> ---
> ----------------------------------------------------------------------
> Status|WAITING |UNCONFIRMED
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:38 ` drepper at redhat dot com
@ 2009-04-21 19:41 ` Andrew Thomas Pinski
0 siblings, 0 replies; 12+ messages in thread
From: Andrew Thomas Pinski @ 2009-04-21 19:41 UTC (permalink / raw)
To: gcc-bugzilla; +Cc: gcc-bugs
Gcc 4.4 and above supports different target options on the function
level but not on a basic block level. So you can create an interneral
version for AVX.
Sent from my iPhone
On Apr 21, 2009, at 12:37 PM, "drepper at redhat dot com" <gcc-bugzilla@gcc.gnu.org
> wrote:
>
>
> ------- Comment #2 from drepper at redhat dot com 2009-04-21 19:37
> -------
> [I couldn't attach the code as an attachment, bugzilla has a bug.]
>
> The program below has to be compiled with -mavx to allow the AVX
> intrinsics
> being used. But this also triggers using the use of the vmovss
> instruction to
> load the parameter for the sin() call from memory.
>
> (Forget the reference to memset in the original report, it's as
> simple as
> passing floating point parameters that triggers the problem.)
>
> #include <math.h>
> #include <stdio.h>
> #include <immintrin.h>
>
>
> static unsigned int eax, ebx, ecx, edx;
>
>
> static int
> has_avx (void)
> {
> if ((ecx & (1 << 27)) == 0)
> /* No OSXSAVE. */
> return 0;
>
> unsigned int feat_eax, feat_edx;
> asm ("xgetbv" : "=a" (feat_eax), "=d" (feat_edx) : "c" (0));
> if ((feat_eax & 6) != 6)
> return 0;
>
> return (ecx & (1 << 28)) != 0;
> }
>
>
> template <typename T, int N>
> struct vec {
> union {
> T n[N];
> __v4sf f[N / (sizeof (__v4sf) / sizeof (T))];
> __v8sf fa[N / (sizeof (__v8sf) / sizeof (T))];
> };
> };
>
>
> template <typename T, int N>
> T
> optscalar(const vec<T,N> &src1, const vec<T,N> &src2)
> {
> T r = 0;
> for (int i = 0; i < N; ++i)
> r += src1[i] * src2[i];
> return r;
> }
>
>
> template <int N>
> float
> optscalar(const vec<float,N> &src1, const vec<float,N> &src2)
> {
> if (has_avx ())
> {
> __m256 tmp = _mm256_setzero_ps ();
> for (int i = 0; i < N / 8; ++i)
> tmp = _mm256_add_ps (tmp, _mm256_mul_ps (src1.fa[i],
> src2.fa[i]));
> tmp = _mm256_hadd_ps (tmp, tmp);
> tmp = _mm256_hadd_ps (tmp, tmp);
> tmp = _mm256_hadd_ps (tmp, tmp);
> union
> {
> __m256 v;
> float a[8];
> } cvt = { tmp };
> return cvt.a[0];
> }
> else
> {
> __m128 tmp = _mm_setzero_ps ();
> for (int i = 0; i < N / 4; ++i)
> tmp = _mm_add_ps (tmp, _mm_mul_ps (src1.f[i], src2.f[i]));
> tmp = _mm_hadd_ps (tmp, tmp);
> tmp = _mm_hadd_ps (tmp, tmp);
> return __builtin_ia32_vec_ext_v4sf (tmp, 0);
> }
> }
>
>
> #define N 100000
> #define DEF(type) vec<type,N> v##type##1, v##type##2; type
> type##res, type##cmp
> DEF(float);
>
> float g;
>
> int
> main ()
> {
> float f = sinf (g);
> printf ("%g\n", f);
>
> asm volatile ("cpuid"
> : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
> : "0" (1));
>
> float floatres = optscalar (vfloat1, vfloat2);
> printf ("%g\n", floatres);
>
> return 0;
> }
>
>
> --
>
> drepper at redhat dot com changed:
>
> What |Removed |Added
> ---
> ---
> ----------------------------------------------------------------------
> Status|WAITING |UNCONFIRMED
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
2009-04-21 19:08 ` [Bug middle-end/39840] " hjl dot tools at gmail dot com
@ 2009-04-21 19:38 ` drepper at redhat dot com
2009-04-21 19:41 ` Andrew Thomas Pinski
2009-04-21 19:42 ` pinskia at gmail dot com
` (5 subsequent siblings)
7 siblings, 1 reply; 12+ messages in thread
From: drepper at redhat dot com @ 2009-04-21 19:38 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from drepper at redhat dot com 2009-04-21 19:37 -------
[I couldn't attach the code as an attachment, bugzilla has a bug.]
The program below has to be compiled with -mavx to allow the AVX intrinsics
being used. But this also triggers using the use of the vmovss instruction to
load the parameter for the sin() call from memory.
(Forget the reference to memset in the original report, it's as simple as
passing floating point parameters that triggers the problem.)
#include <math.h>
#include <stdio.h>
#include <immintrin.h>
static unsigned int eax, ebx, ecx, edx;
static int
has_avx (void)
{
if ((ecx & (1 << 27)) == 0)
/* No OSXSAVE. */
return 0;
unsigned int feat_eax, feat_edx;
asm ("xgetbv" : "=a" (feat_eax), "=d" (feat_edx) : "c" (0));
if ((feat_eax & 6) != 6)
return 0;
return (ecx & (1 << 28)) != 0;
}
template <typename T, int N>
struct vec {
union {
T n[N];
__v4sf f[N / (sizeof (__v4sf) / sizeof (T))];
__v8sf fa[N / (sizeof (__v8sf) / sizeof (T))];
};
};
template <typename T, int N>
T
optscalar(const vec<T,N> &src1, const vec<T,N> &src2)
{
T r = 0;
for (int i = 0; i < N; ++i)
r += src1[i] * src2[i];
return r;
}
template <int N>
float
optscalar(const vec<float,N> &src1, const vec<float,N> &src2)
{
if (has_avx ())
{
__m256 tmp = _mm256_setzero_ps ();
for (int i = 0; i < N / 8; ++i)
tmp = _mm256_add_ps (tmp, _mm256_mul_ps (src1.fa[i], src2.fa[i]));
tmp = _mm256_hadd_ps (tmp, tmp);
tmp = _mm256_hadd_ps (tmp, tmp);
tmp = _mm256_hadd_ps (tmp, tmp);
union
{
__m256 v;
float a[8];
} cvt = { tmp };
return cvt.a[0];
}
else
{
__m128 tmp = _mm_setzero_ps ();
for (int i = 0; i < N / 4; ++i)
tmp = _mm_add_ps (tmp, _mm_mul_ps (src1.f[i], src2.f[i]));
tmp = _mm_hadd_ps (tmp, tmp);
tmp = _mm_hadd_ps (tmp, tmp);
return __builtin_ia32_vec_ext_v4sf (tmp, 0);
}
}
#define N 100000
#define DEF(type) vec<type,N> v##type##1, v##type##2; type type##res, type##cmp
DEF(float);
float g;
int
main ()
{
float f = sinf (g);
printf ("%g\n", f);
asm volatile ("cpuid"
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
: "0" (1));
float floatres = optscalar (vfloat1, vfloat2);
printf ("%g\n", floatres);
return 0;
}
--
drepper at redhat dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |UNCONFIRMED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
@ 2009-04-21 19:08 ` hjl dot tools at gmail dot com
2009-04-21 19:38 ` drepper at redhat dot com
` (6 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: hjl dot tools at gmail dot com @ 2009-04-21 19:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from hjl dot tools at gmail dot com 2009-04-21 19:07 -------
Please provide some sample code which can be compiled.
--
hjl dot tools at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39840
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-03-20 6:29 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-39840-4@http.gcc.gnu.org/bugzilla/>
2021-11-29 6:47 ` [Bug middle-end/39840] Non-optimal (or wrong) implementation of SSE intrinsics pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2024-03-20 6:29 ` pinskia at gcc dot gnu.org
2009-04-21 19:05 [Bug middle-end/39840] New: " drepper at redhat dot com
2009-04-21 19:08 ` [Bug middle-end/39840] " hjl dot tools at gmail dot com
2009-04-21 19:38 ` drepper at redhat dot com
2009-04-21 19:41 ` Andrew Thomas Pinski
2009-04-21 19:42 ` pinskia at gmail dot com
2009-04-21 19:51 ` drepper at redhat dot com
2009-04-21 20:34 ` hjl dot tools at gmail dot com
2009-04-21 21:57 ` hjl dot tools at gmail dot com
2009-04-22 9:37 ` rguenth at gcc dot gnu dot org
2009-04-22 13:58 ` hjl dot tools at gmail dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).