
There seems to be plenty of documentation around on implementing a new primop, much of it needs some tweaking as files have moved and such. I can't seem to find any documentation about how to implement primtypes though. For example, I want to experiment with a new primtype "DV#", my assumption that the type was first declared in the primops.txt.pp seems incorrect. So I'm trying to backtrack a bit and see where primtypes first appear, I'm hoping someone can at least give me a pointer :-) For example: ./compiler/prelude/primops.txt.pp Add the following: primtype DoubleVec# a Compiles fine Add a primop on the type: primop ExtractDoubleVecOp "extractDoubleVec#" GenPrimOp DoubleVec# -> Int# -> Double# And suddenly it's not as friendly. I expected a compile issue since I hadn't added it to CgPrimOps.hs yet, but this is not that compile problem: make -r --no-print-directory -f ghc.mk phase=1 phase_1_builds /usr/bin/gcc -E -undef -traditional -P -Iincludes -x c compiler/prelude/primops.txt.pp | grep -v '^#pragma GCC' > compiler/prelude/primops.txt "inplace/bin/genprimopcode" --data-decl < compiler/prelude/primops.txt > compiler/primop-data-decl.hs-incl "inplace/bin/genprimopcode" --primop-tag < compiler/prelude/primops.txt > compiler/primop-tag.hs-incl "inplace/bin/genprimopcode" --primop-list < compiler/prelude/primops.txt > compiler/primop-list.hs-incl "inplace/bin/genprimopcode" --has-side-effects < compiler/prelude/primops.txt > compiler/primop-has-side-effects.hs-incl "inplace/bin/genprimopcode" --out-of-line < compiler/prelude/primops.txt > compiler/primop-out-of-line.hs-incl "inplace/bin/genprimopcode" --commutable < compiler/prelude/primops.txt > compiler/primop-commutable.hs-incl "inplace/bin/genprimopcode" --code-size < compiler/prelude/primops.txt > compiler/primop-code-size.hs-incl "inplace/bin/genprimopcode" --can-fail < compiler/prelude/primops.txt > compiler/primop-can-fail.hs-incl "inplace/bin/genprimopcode" --strictness < compiler/prelude/primops.txt > compiler/primop-strictness.hs-incl "inplace/bin/genprimopcode" --primop-primop-info < compiler/prelude/primops.txt > compiler/primop-primop-info.hs-incl genprimopcode: ppType: can't handle: TyApp "DoubleVec#" [] make[1]: *** [compiler/primop-primop-info.hs-incl] Error 1 make[1]: *** Deleting file `compiler/primop-primop-info.hs-incl' make: *** [all] Error 2 So, I'm thinking the type needs to be better defined but I haven't tracked it down yet (I'm working on it though ;-) Any clues? Paul Monday Parallel Scientific, LLC. paul.monday@parsci.com