hrmm, i think i can help with this tomorrow/ rest of the week, (esp since i'm one of your mentors :) )
but if other folks have design ideas, more than happy to use as many ideas as possible! On Wed, Jun 27, 2018 at 5:32 PM Abhiroop Sarkar <asiamgen...@gmail.com> wrote: > Hello all, > > I am currently working on adding support for SIMD operations to the native > code generator. One of the roadblocks I faced recently was the definition > of the `globalRegType` function in "compiler/cmm/CmmExpr.hs". The > `globalRegType` function maps the STG registers to the respective `CmmType` > datatype. > > For Xmm, Ymm, Zmm registers the function defines globalRegType like this: > https://github.com/ghc/ghc/blob/master/compiler/cmm/CmmExpr.hs#L585-L587 > > Consider the case for an Xmm register, the above definition limits an Xmm > register to hold only vectors of size 4. However we can store 2 64-bit > Doubles or 16 Int8s or 8 Int16s and so on > > The function `globalRegType` is internally called by the function > `cmmRegType` ( > https://github.com/ghc/ghc/blob/838b69032566ce6ab3918d70e8d5e098d0bcee02/compiler/cmm/CmmExpr.hs#L275) > which is itself used in a number of places in the x86 code generator. > > In fact depending on the result of the `cmmRegType` function is another > important function `cmmTypeFormat` defined in Format.hs whose result is > used to print the actual assembly instruction. > > I have extended all the other Format types to include VectorFormats, > however this definition of the `globalRegType` seems incorrect to me. > Looking at the signature of the function itself: > > `globalRegType :: DynFlags -> GlobalReg -> CmmType` > > its actually difficult to predict the CmmType by just looking at the > GlobalReg in case of Xmm, Ymm, Zmm. So thats why my original question how > do I go about solving this. Should I modify the GlobalReg type to contain > more information like Width and Length(for Xmm, Ymm, Zmm) or do I somehow > pass the length and width information to the globalRegType function? > > Thanks > Abhiroop Sakar > _______________________________________________ > 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