<div dir="auto">Luite is currently working on unboxed tuple support in the interpreter. This will also be limited, as getting a generic solution for arbitrary sized tuples raises a lot of complications.</div><div dir="auto"><br></div><div dir="auto">Thus form a practical point of view, I’d go for (1) ;-)</div><div dir="auto"><br></div><div dir="auto">We’ll need to rethink and get SIMD proper support at some point though, the lack of such is rather sad.</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 26 Sep 2020 at 8:27 PM, Ryan Scott <<a href="mailto:ryan.gl.scott@gmail.com">ryan.gl.scott@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div>I had a feeling that this might be the case. Unfortunately, this technology preview is actively blocking progress on <br><br>!4097, which leaves me at a loss for what to do. I can see two ways forward:</div><div><br></div><div>1. Remove<br><br><span>unpackInt8X64#</span><br><br><br><br> and friends.</div><div>2. Reconsider whether the tuple size limit should apply to unboxed tuples. Perhaps this size limit only makes sense for boxed tuples? This comment [1] suggests that defining a boxed tuple of size greater than 62 induces a segfault, but it's unclear to me if the same thing happens for unboxed tuples.<br></div><div><br></div><div>Ryan S.</div><div>-----</div><div>[1] <a href="https://gitlab.haskell.org/ghc/ghc/-/blob/a1f34d37b47826e86343e368a5c00f1a4b1f2bce/libraries/ghc-prim/GHC/Tuple.hs#L170" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/blob/a1f34d37b47826e86343e368a5c00f1a4b1f2bce/libraries/ghc-prim/GHC/Tuple.hs#L170</a><br><br><br><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Sep 26, 2020 at 7:54 AM Ben Gamari <<a href="mailto:ben@smart-cactus.org" target="_blank">ben@smart-cactus.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">On September 25, 2020 6:21:23 PM EDT, Ryan Scott <<a href="mailto:ryan.gl.scott@gmail.com" target="_blank">ryan.gl.scott@gmail.com</a>> wrote:<br><br><br>...<br><br><br>>However, I discovered recently that there are places where GHC *does*<br><br><br>>use<br><br><br>>unboxed tuples with arity greater than 62. For example, the<br><br><br>>GHC.Prim.unpackInt8X64# [2] function returns an unboxed tuple of size<br><br><br>>64. I<br><br><br>>was confused for a while about how this was even possible, but I<br><br><br>>realized<br><br><br>>later than GHC only enforces the tuple size limit in expressions and<br><br><br>>patterns [3]. Simply having a type signature with a large unboxed tuple<br><br><br>>is<br><br><br>>fine in and of itself, and since unpackInt8X64# is implemented as a<br><br><br>>primop,<br><br><br>>no large unboxed tuples are ever used in the "body" of the function.<br><br><br>>(Indeed, primops don't have function bodies in the conventional sense.)<br><br><br>>Other functions in GHC.Prim that use unboxed tuples of arity 64 include<br><br><br>>unpackWord8X64# [4], packInt8X64# [5], and packWord8X64# [6].<br><br><br>><br><br><br>>But this makes me wonder: how on earth is it even possible to *use*<br><br><br>>unpackInt8X64#? <br><br><br><br><br><br><br><br><br>I strongly suspect that the answer here is "you can't yet no one has noticed until now." The SIMD operations were essentially introduced as a technology preview and therefore never had proper tests added. Only a subset of these operations have any tests at all and I doubt anyone has attempted to use the 64-wide operations, which are rather specialized.<br><br><br><br><br><br>Cheers,<br><br><br><br><br><br>- Ben <br><br><br></blockquote></div><br><br>_______________________________________________<br><br>ghc-devs mailing list<br><br><a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br><br><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br><br></blockquote></div></div>