Ahh, I see... I finally found the primops, machops, and code generator for x86:
MO_V_Insert {} -> needLlvm MO_V_Extract {} -> needLlvm MO_V_Add {} -> needLlvm MO_V_Sub {} -> needLlvm ... > The reason this is not available more widely is lack of support in the native > code generator. Do you have any interest in working on adding such support? > :) I'm afraid I'm short on free time at the moment but I'll let you know if I have a chance to work on that. Thanks, Omer 2016-06-07 11:22 GMT-04:00 Geoffrey Mainland <mainl...@apeiron.net>: > Only programs that use vector primops will generate VecRep's. GHC is not > such a program. > > The branch of vector that I modified to use vector primops will generate > VecRep's. You can find it here: > > https://github.com/mainland/vector/tree/simd > > It uses a modified version of primitive. See here, for example: > > https://github.com/mainland/primitive/blob/simd/Data/Primitive/Multi.hs > > The reason this is not available more widely is lack of support in the > native code generator. Do you have any interest in working on adding > such support? :) > > Cheers, > Geoff > > On 06/07/2016 11:08 AM, Ömer Sinan Ağacan wrote: >> Thanks, I can see the TyCons with VecReps there.. but I still can't see how >> the >> terms are constructed? Can you show me some example programs, or functions in >> the compiler, that generate vector terms? (e.g. terms with types with >> VecReps) >> >> 2016-06-07 10:48 GMT-04:00 Geoffrey Mainland <mainl...@apeiron.net>: >>> VecRep is used for vector operations. If you aren't using LLVM, you >>> won't see them. >>> >>> VecRep's are generated by utils/genprimopcode/Main.hs. >>> >>> Check out compiler/stage1/build/primop-vector-tys.hs-incl in your build >>> tree---should be plenty of generated VecRep's there :) >>> >>> Cheers, >>> Geoff >>> >>> On 06/07/2016 05:00 AM, Ömer Sinan Ağacan wrote: >>>> I have some code that does things depending on PrimReps of terms and so I >>>> have >>>> to handle VecRep there. To understand what VecRep exactly is and how to >>>> use it I >>>> looked at its uses, and all I can find was that we have a wired-in DataCon >>>> `vecRepDataCon` which has a type that I thought should have VecRep >>>> PrimRep, but >>>> when I test in GHCi I see that its PrimRep is PtrRep: >>>> >>>> λ> map typePrimRep (map dataConRepType (tyConDataCons runtimeRepTyCon)) >>>> >>>> [PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep,PtrRep] >>>> >>>> (This DataCon is not exported and only used in runtimeRepTyCon) >>>> >>>> So I think VecRep may not be in use at the moment. Do we still need to >>>> maintain >>>> it? What's the use case? Can anyone show me a Core term that has a type >>>> whose >>>> PrimRep is VecRep? >>>> >>>> Thanks.. >>>> _______________________________________________ >>>> ghc-devs mailing list >>>> ghc-devs@haskell.org >>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs