* [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU
@ 2007-07-27 4:59 Andrew_Pinski
2007-08-13 18:25 ` Andrew Pinski
0 siblings, 1 reply; 4+ messages in thread
From: Andrew_Pinski @ 2007-07-27 4:59 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 986 bytes --]
Hi,
When http://gcc.gnu.org/ml/gcc-patches/2007-06/msg02034.html went in, it
had missed that fp/dfp compares where done in a different function than
prepare_cmp_insn so the word mode was still being used. This patch fixes
that problem up and makes the spu set up the two mode attributes to SImode
(spu-elf's word mode is TImode but TImode is not very efficient on SPU).
OK? Bootstrapped and tested on powerpc64-linux-gnu with no regressions and
built for spu-elf with no regressions and a couple of the ieee/fp-cmp*
tests now pass.
Thanks,
Andrew Pinski
ChangeLog:
* optabs.c (prepare_float_lib_cmp): Use
libgcc_cmp_return_mode instead of word_mode.
* config/dfp-bit.h: Likewise.
* config/fp-bit.h: Likewise.
* config/spu/spu.c (spu_libgcc_cmp_return_mode):
New function.
(spu_libgcc_shift_count_mode): New function.
(TARGET_LIBGCC_CMP_RETURN_MODE): Define.
(TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
[-- Attachment #2: fixspufpcmp.diff.txt --]
[-- Type: text/plain, Size: 4870 bytes --]
Index: optabs.c
===================================================================
--- optabs.c (revision 126865)
+++ optabs.c (working copy)
@@ -4117,10 +4117,11 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
rtx x = *px;
rtx y = *py;
enum machine_mode orig_mode = GET_MODE (x);
- enum machine_mode mode;
+ enum machine_mode mode, cmp_mode;
rtx value, target, insns, equiv;
rtx libfunc = 0;
bool reversed_p = false;
+ cmp_mode = targetm.libgcc_cmp_return_mode ();
for (mode = orig_mode;
mode != VOIDmode;
@@ -4159,14 +4160,14 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
condition can be determined at compile-time. */
if (comparison == UNORDERED)
{
- rtx temp = simplify_gen_relational (NE, word_mode, mode, x, x);
- equiv = simplify_gen_relational (NE, word_mode, mode, y, y);
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ rtx temp = simplify_gen_relational (NE, cmp_mode, mode, x, x);
+ equiv = simplify_gen_relational (NE, cmp_mode, mode, y, y);
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
temp, const_true_rtx, equiv);
}
else
{
- equiv = simplify_gen_relational (comparison, word_mode, mode, x, y);
+ equiv = simplify_gen_relational (comparison, cmp_mode, mode, x, y);
if (! FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, comparison))
{
rtx true_rtx, false_rtx;
@@ -4206,18 +4207,18 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
default:
gcc_unreachable ();
}
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
equiv, true_rtx, false_rtx);
}
}
start_sequence ();
value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
- word_mode, 2, x, mode, y, mode);
+ cmp_mode, 2, x, mode, y, mode);
insns = get_insns ();
end_sequence ();
- target = gen_reg_rtx (word_mode);
+ target = gen_reg_rtx (cmp_mode);
emit_libcall_block (insns, target, value, equiv);
if (comparison == UNORDERED
@@ -4226,7 +4227,7 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
*px = target;
*py = const0_rtx;
- *pmode = word_mode;
+ *pmode = cmp_mode;
*pcomparison = comparison;
*punsignedp = 0;
}
Index: config/dfp-bit.h
===================================================================
--- config/dfp-bit.h (revision 126865)
+++ config/dfp-bit.h (working copy)
@@ -454,9 +454,9 @@ typedef unsigned int USItype __attribute
typedef unsigned int UDItype __attribute__ ((mode (DI)));
/* The type of the result of a decimal float comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
/* Prototypes. */
Index: config/fp-bit.h
===================================================================
--- config/fp-bit.h (revision 126865)
+++ config/fp-bit.h (working copy)
@@ -108,9 +108,9 @@ typedef int TItype __attribute__ ((mode
#endif
/* The type of the result of a floating point comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
#ifndef CMPtype
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#endif
typedef unsigned int UHItype __attribute__ ((mode (HI)));
Index: config/spu/spu.c
===================================================================
--- config/spu/spu.c (revision 126865)
+++ config/spu/spu.c (working copy)
@@ -174,6 +174,12 @@ static int cpat_info(unsigned char *arr,
static enum immediate_class classify_immediate (rtx op,
enum machine_mode mode);
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void);
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void);
+
/* Built in types. */
tree spu_builtin_types[SPU_BTI_MAX];
\f
@@ -272,6 +278,12 @@ const struct attribute_spec spu_attribut
#undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
#define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST spu_builtin_vectorization_cost
+#undef TARGET_LIBGCC_CMP_RETURN_MODE
+#define TARGET_LIBGCC_CMP_RETURN_MODE spu_libgcc_cmp_return_mode
+
+#undef TARGET_LIBGCC_SHIFT_COUNT_MODE
+#define TARGET_LIBGCC_SHIFT_COUNT_MODE spu_libgcc_shift_count_mode
+
struct gcc_target targetm = TARGET_INITIALIZER;
void
@@ -5485,4 +5497,17 @@ spu_init_expanders (void)
* expanding the prologue. */
if (cfun)
REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = 8;
-}
+}
+
+
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void)
+{
+ return SImode;
+}
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void)
+{
+ return SImode;
+}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU
2007-07-27 4:59 [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU Andrew_Pinski
@ 2007-08-13 18:25 ` Andrew Pinski
2007-08-28 20:03 ` Andrew Pinski
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Pinski @ 2007-08-13 18:25 UTC (permalink / raw)
To: Andrew_Pinski; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1129 bytes --]
Ping?
On 7/26/07, Andrew_Pinski@playstation.sony.com
<Andrew_Pinski@playstation.sony.com> wrote:
> Hi,
> When http://gcc.gnu.org/ml/gcc-patches/2007-06/msg02034.html went in, it
> had missed that fp/dfp compares where done in a different function than
> prepare_cmp_insn so the word mode was still being used. This patch fixes
> that problem up and makes the spu set up the two mode attributes to SImode
> (spu-elf's word mode is TImode but TImode is not very efficient on SPU).
>
> OK? Bootstrapped and tested on powerpc64-linux-gnu with no regressions and
> built for spu-elf with no regressions and a couple of the ieee/fp-cmp*
> tests now pass.
>
> Thanks,
> Andrew Pinski
>
> ChangeLog:
>
> * optabs.c (prepare_float_lib_cmp): Use
> libgcc_cmp_return_mode instead of word_mode.
> * config/dfp-bit.h: Likewise.
> * config/fp-bit.h: Likewise.
> * config/spu/spu.c (spu_libgcc_cmp_return_mode):
> New function.
> (spu_libgcc_shift_count_mode): New function.
> (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
> (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
>
>
>
[-- Attachment #2: fixspufpcmp.diff.txt --]
[-- Type: text/plain, Size: 4870 bytes --]
Index: optabs.c
===================================================================
--- optabs.c (revision 126865)
+++ optabs.c (working copy)
@@ -4117,10 +4117,11 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
rtx x = *px;
rtx y = *py;
enum machine_mode orig_mode = GET_MODE (x);
- enum machine_mode mode;
+ enum machine_mode mode, cmp_mode;
rtx value, target, insns, equiv;
rtx libfunc = 0;
bool reversed_p = false;
+ cmp_mode = targetm.libgcc_cmp_return_mode ();
for (mode = orig_mode;
mode != VOIDmode;
@@ -4159,14 +4160,14 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
condition can be determined at compile-time. */
if (comparison == UNORDERED)
{
- rtx temp = simplify_gen_relational (NE, word_mode, mode, x, x);
- equiv = simplify_gen_relational (NE, word_mode, mode, y, y);
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ rtx temp = simplify_gen_relational (NE, cmp_mode, mode, x, x);
+ equiv = simplify_gen_relational (NE, cmp_mode, mode, y, y);
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
temp, const_true_rtx, equiv);
}
else
{
- equiv = simplify_gen_relational (comparison, word_mode, mode, x, y);
+ equiv = simplify_gen_relational (comparison, cmp_mode, mode, x, y);
if (! FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, comparison))
{
rtx true_rtx, false_rtx;
@@ -4206,18 +4207,18 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
default:
gcc_unreachable ();
}
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
equiv, true_rtx, false_rtx);
}
}
start_sequence ();
value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
- word_mode, 2, x, mode, y, mode);
+ cmp_mode, 2, x, mode, y, mode);
insns = get_insns ();
end_sequence ();
- target = gen_reg_rtx (word_mode);
+ target = gen_reg_rtx (cmp_mode);
emit_libcall_block (insns, target, value, equiv);
if (comparison == UNORDERED
@@ -4226,7 +4227,7 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
*px = target;
*py = const0_rtx;
- *pmode = word_mode;
+ *pmode = cmp_mode;
*pcomparison = comparison;
*punsignedp = 0;
}
Index: config/dfp-bit.h
===================================================================
--- config/dfp-bit.h (revision 126865)
+++ config/dfp-bit.h (working copy)
@@ -454,9 +454,9 @@ typedef unsigned int USItype __attribute
typedef unsigned int UDItype __attribute__ ((mode (DI)));
/* The type of the result of a decimal float comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
/* Prototypes. */
Index: config/fp-bit.h
===================================================================
--- config/fp-bit.h (revision 126865)
+++ config/fp-bit.h (working copy)
@@ -108,9 +108,9 @@ typedef int TItype __attribute__ ((mode
#endif
/* The type of the result of a floating point comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
#ifndef CMPtype
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#endif
typedef unsigned int UHItype __attribute__ ((mode (HI)));
Index: config/spu/spu.c
===================================================================
--- config/spu/spu.c (revision 126865)
+++ config/spu/spu.c (working copy)
@@ -174,6 +174,12 @@ static int cpat_info(unsigned char *arr,
static enum immediate_class classify_immediate (rtx op,
enum machine_mode mode);
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void);
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void);
+
/* Built in types. */
tree spu_builtin_types[SPU_BTI_MAX];
\f
@@ -272,6 +278,12 @@ const struct attribute_spec spu_attribut
#undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
#define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST spu_builtin_vectorization_cost
+#undef TARGET_LIBGCC_CMP_RETURN_MODE
+#define TARGET_LIBGCC_CMP_RETURN_MODE spu_libgcc_cmp_return_mode
+
+#undef TARGET_LIBGCC_SHIFT_COUNT_MODE
+#define TARGET_LIBGCC_SHIFT_COUNT_MODE spu_libgcc_shift_count_mode
+
struct gcc_target targetm = TARGET_INITIALIZER;
void
@@ -5485,4 +5497,17 @@ spu_init_expanders (void)
* expanding the prologue. */
if (cfun)
REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = 8;
-}
+}
+
+
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void)
+{
+ return SImode;
+}
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void)
+{
+ return SImode;
+}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU
2007-08-13 18:25 ` Andrew Pinski
@ 2007-08-28 20:03 ` Andrew Pinski
2007-08-31 2:16 ` Mark Mitchell
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Pinski @ 2007-08-28 20:03 UTC (permalink / raw)
To: Andrew_Pinski; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1256 bytes --]
Ping?
On 8/13/07, Andrew Pinski <pinskia@gmail.com> wrote:
> Ping?
>
> On 7/26/07, Andrew_Pinski@playstation.sony.com
> <Andrew_Pinski@playstation.sony.com> wrote:
> > Hi,
> > When http://gcc.gnu.org/ml/gcc-patches/2007-06/msg02034.html went in, it
> > had missed that fp/dfp compares where done in a different function than
> > prepare_cmp_insn so the word mode was still being used. This patch fixes
> > that problem up and makes the spu set up the two mode attributes to SImode
> > (spu-elf's word mode is TImode but TImode is not very efficient on SPU).
> >
> > OK? Bootstrapped and tested on powerpc64-linux-gnu with no regressions and
> > built for spu-elf with no regressions and a couple of the ieee/fp-cmp*
> > tests now pass.
> >
> > Thanks,
> > Andrew Pinski
> >
> > ChangeLog:
> >
> > * optabs.c (prepare_float_lib_cmp): Use
> > libgcc_cmp_return_mode instead of word_mode.
> > * config/dfp-bit.h: Likewise.
> > * config/fp-bit.h: Likewise.
> > * config/spu/spu.c (spu_libgcc_cmp_return_mode):
> > New function.
> > (spu_libgcc_shift_count_mode): New function.
> > (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
> > (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
> >
> >
> >
>
>
[-- Attachment #2: fixspufpcmp.diff.txt --]
[-- Type: text/plain, Size: 4870 bytes --]
Index: optabs.c
===================================================================
--- optabs.c (revision 126865)
+++ optabs.c (working copy)
@@ -4117,10 +4117,11 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
rtx x = *px;
rtx y = *py;
enum machine_mode orig_mode = GET_MODE (x);
- enum machine_mode mode;
+ enum machine_mode mode, cmp_mode;
rtx value, target, insns, equiv;
rtx libfunc = 0;
bool reversed_p = false;
+ cmp_mode = targetm.libgcc_cmp_return_mode ();
for (mode = orig_mode;
mode != VOIDmode;
@@ -4159,14 +4160,14 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
condition can be determined at compile-time. */
if (comparison == UNORDERED)
{
- rtx temp = simplify_gen_relational (NE, word_mode, mode, x, x);
- equiv = simplify_gen_relational (NE, word_mode, mode, y, y);
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ rtx temp = simplify_gen_relational (NE, cmp_mode, mode, x, x);
+ equiv = simplify_gen_relational (NE, cmp_mode, mode, y, y);
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
temp, const_true_rtx, equiv);
}
else
{
- equiv = simplify_gen_relational (comparison, word_mode, mode, x, y);
+ equiv = simplify_gen_relational (comparison, cmp_mode, mode, x, y);
if (! FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, comparison))
{
rtx true_rtx, false_rtx;
@@ -4206,18 +4207,18 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
default:
gcc_unreachable ();
}
- equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode, word_mode,
+ equiv = simplify_gen_ternary (IF_THEN_ELSE, cmp_mode, cmp_mode,
equiv, true_rtx, false_rtx);
}
}
start_sequence ();
value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
- word_mode, 2, x, mode, y, mode);
+ cmp_mode, 2, x, mode, y, mode);
insns = get_insns ();
end_sequence ();
- target = gen_reg_rtx (word_mode);
+ target = gen_reg_rtx (cmp_mode);
emit_libcall_block (insns, target, value, equiv);
if (comparison == UNORDERED
@@ -4226,7 +4227,7 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
*px = target;
*py = const0_rtx;
- *pmode = word_mode;
+ *pmode = cmp_mode;
*pcomparison = comparison;
*punsignedp = 0;
}
Index: config/dfp-bit.h
===================================================================
--- config/dfp-bit.h (revision 126865)
+++ config/dfp-bit.h (working copy)
@@ -454,9 +454,9 @@ typedef unsigned int USItype __attribute
typedef unsigned int UDItype __attribute__ ((mode (DI)));
/* The type of the result of a decimal float comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
/* Prototypes. */
Index: config/fp-bit.h
===================================================================
--- config/fp-bit.h (revision 126865)
+++ config/fp-bit.h (working copy)
@@ -108,9 +108,9 @@ typedef int TItype __attribute__ ((mode
#endif
/* The type of the result of a floating point comparison. This must
- match `word_mode' in GCC for the target. */
+ match `__libgcc_cmp_return__' in GCC for the target. */
#ifndef CMPtype
-typedef int CMPtype __attribute__ ((mode (word)));
+typedef int CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#endif
typedef unsigned int UHItype __attribute__ ((mode (HI)));
Index: config/spu/spu.c
===================================================================
--- config/spu/spu.c (revision 126865)
+++ config/spu/spu.c (working copy)
@@ -174,6 +174,12 @@ static int cpat_info(unsigned char *arr,
static enum immediate_class classify_immediate (rtx op,
enum machine_mode mode);
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void);
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void);
+
/* Built in types. */
tree spu_builtin_types[SPU_BTI_MAX];
\f
@@ -272,6 +278,12 @@ const struct attribute_spec spu_attribut
#undef TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
#define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST spu_builtin_vectorization_cost
+#undef TARGET_LIBGCC_CMP_RETURN_MODE
+#define TARGET_LIBGCC_CMP_RETURN_MODE spu_libgcc_cmp_return_mode
+
+#undef TARGET_LIBGCC_SHIFT_COUNT_MODE
+#define TARGET_LIBGCC_SHIFT_COUNT_MODE spu_libgcc_shift_count_mode
+
struct gcc_target targetm = TARGET_INITIALIZER;
void
@@ -5485,4 +5497,17 @@ spu_init_expanders (void)
* expanding the prologue. */
if (cfun)
REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = 8;
-}
+}
+
+
+static enum machine_mode
+spu_libgcc_cmp_return_mode (void)
+{
+ return SImode;
+}
+
+static enum machine_mode
+spu_libgcc_shift_count_mode (void)
+{
+ return SImode;
+}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU
2007-08-28 20:03 ` Andrew Pinski
@ 2007-08-31 2:16 ` Mark Mitchell
0 siblings, 0 replies; 4+ messages in thread
From: Mark Mitchell @ 2007-08-31 2:16 UTC (permalink / raw)
To: Andrew Pinski; +Cc: Andrew_Pinski, gcc-patches
Andrew Pinski wrote:
> Ping?
>>> ChangeLog:
>>>
>>> * optabs.c (prepare_float_lib_cmp): Use
>>> libgcc_cmp_return_mode instead of word_mode.
>>> * config/dfp-bit.h: Likewise.
>>> * config/fp-bit.h: Likewise.
>>> * config/spu/spu.c (spu_libgcc_cmp_return_mode):
>>> New function.
>>> (spu_libgcc_shift_count_mode): New function.
>>> (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
>>> (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
OK.
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-08-31 2:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-07-27 4:59 [PATCH] Use cmp_return_mode for fp libcall compare modes and set up the two mode new attributes for SPU Andrew_Pinski
2007-08-13 18:25 ` Andrew Pinski
2007-08-28 20:03 ` Andrew Pinski
2007-08-31 2:16 ` Mark Mitchell
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).