Tuesday, January 20, 2009

The Grind

Decided to address some of the other outstanding bugs before starting on genSwitch. I don't want other bugs to confuse the issue.

Did a full run of the testsuite with optasm. I added the triage comments manually.

OVERALL SUMMARY for test run started at Thursday, 15 January 2009  7:47:05 PM EST
2283 total tests, which gave rise to
8531 test cases, of which
0 caused framework failures
7429 were skipped

1025 expected passes
32 expected failures
0 unexpected passes
45 unexpected failures

Unexpected failures:
arith004(optasm) -- hpc: iselExpr64 panic. optasm: getRegister panic.
num012(optasm) -- optasm: ppr match fail. others: wrong output
process007(optasm) -- hpc: iselExpr64. others: wrong output
time003(optasm) -- hpc: iselExpr64 panic. optasm: getRegister panic.
bits(optasm) -- hpc: iselExpr64 panic. optasm: getRegister panic.
tough(optasm) -- iselExpr64
hpc001(optasm) -- iselExpr64
hpc_fork(optasm) -- iselExpr64
tc213(optasm) -- getRegister

expfloat(optasm) -- genCCall can not reduce
fun_insts(optasm) -- genCCall can not reduce

num013(optasm) -- iselExpr64, match fail
2388(optasm) -- match fail
enum02(optasm) -- match fail
enum03(optasm) -- match fail
arith011(optasm) -- match fail
arith017(optasm) -- match fail
ffi017(optasm) -- match fail C types
ffi018(optasm) -- match fail 64bit ffi
ffi019(optasm) -- match fail 64bit ffi

1916(optasm) -- invalid register

2594(optasm) -- all ways: segv 64bit ffi

seward-space-leak(optasm) -- genSwitch
simpl007(optasm) -- genSwitch
syn-perf(optasm) -- genSwitch
tup001(optasm) -- genSwitch
andy_cherry(optasm) -- genSwitch
arrowrun001(optasm) -- genSwitch
arrowrun004(optasm) -- genSwitch
barton-mangler-bug(optasm) -- genSwitch
cg054(optasm) -- genSwitch
cvh_unboxing(optasm) -- genSwitch
drv005(optasm) -- genSwitch
drv006(optasm) -- genSwitch
drvrun014(optasm) -- genSwitch
joao-circular(optasm) -- genSwitch
jtod_circint(optasm) -- genSwitch


hClose002(optasm) -- all ways: same wrong output
user001(optasm) -- all ways: same wrong output
2910(optasm) -- all ways: same wrong output
tcrun007(optasm) -- all ways: missing import
T2914(optasm) -- all ways: type error
annrun01(optasm) -- all ways: unknown package ghc
ann01(optasm) -- all ways: no TH in stage1 all ways
haddockA028(optasm) -- all ways: test wibble


Looking into arith004. The code to generate integer remainder / divide instructions was missing. On further investigation, old SPARC implementations didn't have hardware support for this. GHC used to call out to a library. The SPARC T2 has hardware divide, but you have to compute remainders using div/mul/sub. Added code to do so. Not sure if we still want to maintain the software mul/div path - but I'll worry about that when the rest is fixed and refactored. Also fixed code to generate 64 bit operations on 32 bit SPARC, which was the isel64Expr problem.


arith004 -- fixed
bits -- fixed
tc213 -- fixed
arith012 -- fixed
arith017 -- fixed
ffi017 -- fixed
ffi018 -- fixed
enum02 -- fixed
enum03 -- fixed

num012 -- invalid register 64bit

time003 -- genSwitch

ffi019(optasm) -- all ways: bus error

process007 -- all ways: same wrong output
tough -- all ways: same wrong output
hpc001 -- all ways: same wrong output
hpc_fork -- all ways: same wrong output

No comments:

Post a Comment