Hi, I've compiled 8.0 beta 1 on a R5900 V3.1 (a playstation 2) running Linux (PS2 Linux 1) for portability testing.
Here is what make check gave: Without --disable-spinlocks compilation *appears* to be fine, but the backends core dumps on the spinlock assembly in s_lock.c (signal 4 -- illegal instruction) on first run. With --disable-spinlocks all is well except the two floating point tests float4 and float8 out of 96 tests fail. This is likely due to the R5900 not being fully IEEE-compliant(?) (regression.diffs attached). -- I'm wondering: would it be hard to fix the assembly spinlock code for the R5900? If that's not worth the trouble, would it be a good idea to have configure disable spinlocks automagically on unsupported platforms? Or is it to hard to autodetect this? Bye, Chris. PS: I've compiled using gcc 2.95.2 and with CFLAGS -O0 -g.
*** ./expected/float4.out Fri Mar 12 01:25:40 2004 --- ./results/float4.out Tue Aug 24 02:18:42 2004 *************** *** 33,67 **** ERROR: invalid input syntax for type real: "123 5" -- special inputs SELECT 'NaN'::float4; ! float4 ! -------- ! NaN ! (1 row) ! SELECT 'nan'::float4; ! float4 ! -------- ! NaN ! (1 row) ! SELECT ' NAN '::float4; ! float4 ! -------- ! NaN ! (1 row) ! SELECT 'infinity'::float4; ! float4 ! ---------- ! Infinity ! (1 row) ! SELECT ' -INFINiTY '::float4; ! float4 ! ----------- ! -Infinity ! (1 row) ! -- bad special inputs SELECT 'N A N'::float4; ERROR: invalid input syntax for type real: "N A N" --- 33,47 ---- ERROR: invalid input syntax for type real: "123 5" -- special inputs SELECT 'NaN'::float4; ! ERROR: type "real" value out of range: overflow SELECT 'nan'::float4; ! ERROR: type "real" value out of range: overflow SELECT ' NAN '::float4; ! ERROR: type "real" value out of range: overflow SELECT 'infinity'::float4; ! ERROR: invalid input syntax for type real: "infinity" SELECT ' -INFINiTY '::float4; ! ERROR: invalid input syntax for type real: " -INFINiTY " -- bad special inputs SELECT 'N A N'::float4; ERROR: invalid input syntax for type real: "N A N" *************** *** 70,88 **** SELECT ' INFINITY x'::float4; ERROR: invalid input syntax for type real: " INFINITY x" SELECT 'Infinity'::float4 + 100.0; ! ERROR: type "double precision" value out of range: overflow SELECT 'Infinity'::float4 / 'Infinity'::float4; ! ?column? ! ---------- ! NaN ! (1 row) ! SELECT 'nan'::float4 / 'nan'::float4; ! ?column? ! ---------- ! NaN ! (1 row) ! SELECT '' AS five, FLOAT4_TBL.*; five | f1 ------+------------- --- 50,60 ---- SELECT ' INFINITY x'::float4; ERROR: invalid input syntax for type real: " INFINITY x" SELECT 'Infinity'::float4 + 100.0; ! ERROR: invalid input syntax for type real: "Infinity" SELECT 'Infinity'::float4 / 'Infinity'::float4; ! ERROR: invalid input syntax for type real: "Infinity" SELECT 'nan'::float4 / 'nan'::float4; ! ERROR: type "real" value out of range: overflow SELECT '' AS five, FLOAT4_TBL.*; five | f1 ------+------------- ====================================================================== *** ./expected/float8.out Fri Apr 23 22:32:20 2004 --- ./results/float8.out Tue Aug 24 02:18:42 2004 *************** *** 33,67 **** ERROR: invalid input syntax for type double precision: "123 5" -- special inputs SELECT 'NaN'::float8; ! float8 ! -------- ! NaN ! (1 row) ! SELECT 'nan'::float8; ! float8 ! -------- ! NaN ! (1 row) ! SELECT ' NAN '::float8; ! float8 ! -------- ! NaN ! (1 row) ! SELECT 'infinity'::float8; ! float8 ! ---------- ! Infinity ! (1 row) ! SELECT ' -INFINiTY '::float8; ! float8 ! ----------- ! -Infinity ! (1 row) ! -- bad special inputs SELECT 'N A N'::float8; ERROR: invalid input syntax for type double precision: "N A N" --- 33,47 ---- ERROR: invalid input syntax for type double precision: "123 5" -- special inputs SELECT 'NaN'::float8; ! ERROR: type "double precision" value out of range: overflow SELECT 'nan'::float8; ! ERROR: type "double precision" value out of range: overflow SELECT ' NAN '::float8; ! ERROR: type "double precision" value out of range: overflow SELECT 'infinity'::float8; ! ERROR: invalid input syntax for type double precision: "infinity" SELECT ' -INFINiTY '::float8; ! ERROR: invalid input syntax for type double precision: " -INFINiTY " -- bad special inputs SELECT 'N A N'::float8; ERROR: invalid input syntax for type double precision: "N A N" *************** *** 70,88 **** SELECT ' INFINITY x'::float8; ERROR: invalid input syntax for type double precision: " INFINITY x" SELECT 'Infinity'::float8 + 100.0; ! ERROR: type "double precision" value out of range: overflow SELECT 'Infinity'::float8 / 'Infinity'::float8; ! ?column? ! ---------- ! NaN ! (1 row) ! SELECT 'nan'::float8 / 'nan'::float8; ! ?column? ! ---------- ! NaN ! (1 row) ! SELECT '' AS five, FLOAT8_TBL.*; five | f1 ------+---------------------- --- 50,60 ---- SELECT ' INFINITY x'::float8; ERROR: invalid input syntax for type double precision: " INFINITY x" SELECT 'Infinity'::float8 + 100.0; ! ERROR: invalid input syntax for type double precision: "Infinity" SELECT 'Infinity'::float8 / 'Infinity'::float8; ! ERROR: invalid input syntax for type double precision: "Infinity" SELECT 'nan'::float8 / 'nan'::float8; ! ERROR: type "double precision" value out of range: overflow SELECT '' AS five, FLOAT8_TBL.*; five | f1 ------+---------------------- ======================================================================
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org