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.mon...@parsci.com




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to