<div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 1, 2019 at 3:42 AM Dmitriy Borisenkov via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">A summary of the discussion so far.<div><br></div><div>It seems that there are two possible solutions on how to move forward with non 8 bits byte:</div><div><br></div><div>1. Commit changes without tests. Chris Lattner, Mikael Holmen, Jeroen Dobbelaere, Jesper Antonsson support this idea.</div><div>James Y Knight says that at least magic numbers should be removed "at least where it arguably helps code clarity". This might be not exactly the scope of the changes discussed, but it's probably worth do discuss code clarity having concrete patches.<br></div><div>GCC (according to James Y Knight) has the same practice meaning non-8 bits byte is supported but there are no tests in upstream and we have downstream contributors who will fix the bugs if they appear in the LLVM core.</div><div><span style="font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif">David Chisnall raised a question about what to count as a byte (which defines the scope of the changes) and we suggest to use all 5 criteria he granted:<br></span>> - The smallest unit that can be loaded / stored at a time.</div><div>> - The smallest unit that can be addressed with a raw pointer in a specific address space.<br>> - The largest unit whose encoding is opaque to anything above the ISA.<br>> - The type used to represent `char` in C.<br>> - The type that has a size that all other types are a multiple of.<br><span style="font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif">But if DSPs are less restrictive about byte, some of the criteria could be removed.<br></span><br>2. Use an iconic target. PDP10 was suggested as a candidate. This opinion found support from Tim Northover, Joerg Sonenberger, Mehdi AMINI, Philip Reames. It's not clear though does this opinion oppose upstreaming non-8-bits byte without tests or just a dummy and TVM targets options.</div></div></blockquote><div><br></div><div>To clarify mine: I'm not in favor of 1. It seems to me like a "short term" motivated approach that does not have a good testing/validation story, I'd rather see a more complete proposal that have a path toward an end-to-end solution.</div><div>Not that I am strongly opposed, but I see not going with 1 right now to put the burden (or encourage) these downstream LLVM users to engage and create (if this is critical enough) the complete upstream story instead of stopping short there.</div><div><br></div><div>-- </div><div>Mehdi</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br>So if there is no strong opposition to the solution 1 from the people supporting an iconic target option, we could probably move to the patches.<br><br>--<br>Kind regards, Dmitry Borisenkov</div><div><table cellpadding="0" style="border-collapse:collapse;margin-top:0px;width:auto;display:block"></table></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 31, 2019 at 8:51 AM Mikael Holmén via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On Wed, 2019-10-30 at 15:30 -0700, Chris Lattner via llvm-dev wrote:<br>
> > On Oct 30, 2019, at 3:07 AM, Jeroen Dobbelaere via llvm-dev <<br>
> > <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> > <br>
> > > From: llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> On Behalf Of JF<br>
> > > Bastien via<br>
> > <br>
> > [..]<br>
> > > Is it relevant to any modern compiler though?<br>
> > > <br>
> > > I strongly agree with Tim. As I said in previous threads, unless<br>
> > > people will have<br>
> > > actual testable targets for this type of thing, I think we<br>
> > > shouldn’t add<br>
> > > maintenance burden. This isn’t really C or C++ anymore because so<br>
> > > much code<br>
> > > assumes CHAR_BIT == 8, or at a minimum CHAR_BIT % 8 == 0, that<br>
> > > we’re<br>
> > > supporting a different language. IMO they should use a different<br>
> > > language, and<br>
> > > C / C++ should only allow CHAR_BIT % 8 == 0 (and only for small<br>
> > > values of<br>
> > > CHAR_BIT).<br>
> > <br>
> > We (Synopsys ASIP Designer team) and our customers tend to<br>
> > disagree: our customers do create plenty of cpu architectures<br>
> > with non-8-bit characters (and non-8-bit addressable memories). We<br>
> > are able to provide them with a working c/c++ compiler solution.<br>
> > Maybe some support libraries are not supported out of the box, but<br>
> > for these kind of architectures that is acceptable. <br>
> > (Besides that, llvm is also more than just c/c++)<br>
> <br>
> I agree - there are a lot of weird accelerators with LLVM backends,<br>
> many of them aren’t targeted by C compilers/code.  The ones that do<br>
> have C frontends often use weird dialects or lots of builtins, but<br>
> they are still useful to support.<br>
> <br>
> I find this thread to be a bit confusing: it seems that people are<br>
> aware that such chips exists (even today) but some folks are reticent<br>
> to add generic support for them.  While I can see the concern about<br>
> inventing new backends just for testing, I don’t see an argument<br>
> against generalizing the core and leaving it untested (in<br>
> master).  If any bugs creep in, then people with downstream targets<br>
> can fix them in core.<br>
<br>
Thanks Chris! This is what we would like to see as well!<br>
<br>
We have a 16bit byte target downstream and we live pretty much on top-<br>
of-tree since we pull from llvm every day. Every now and then we find<br>
new 8bit byte assumptions in the code that break things for us that we<br>
fix downstream.<br>
<br>
If we were allowed, we would be happy to upstream such fixes which<br>
would make life easier both for us (as we would need to maintain fewer<br>
downstream diffs) and (hopefully) for others living downstream with<br>
other non-8bit byte targets.<br>
<br>
Now, while we try to fix things in ways that would work for several<br>
different byte sizes, what _we_ actually really test is 16bit bytes, so<br>
I'm sure we fail to generalize things enough for all sizes, but at<br>
least our contributions will make things more general than today. <br>
<br>
And I imagine that if other downstream targets use other byte sizes<br>
than us they would also notice when things break and would also pitch<br>
in and generalize it further so that it in the end works for all users.<br>
<br>
/Mikael<br>
<br>
> <br>
> -Chris<br>
> <br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> <br>
<a href="https://protect2.fireeye.com/v1/url?k=8c219edf-d0a845d0-8c21de44-0cc47ad93e1a-b9df048a1ecb44b1&q=1&e=95c12902-023a-4b29-913c-87a467fe82d9&u=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-dev" rel="noreferrer" target="_blank">https://protect2.fireeye.com/v1/url?k=8c219edf-d0a845d0-8c21de44-0cc47ad93e1a-b9df048a1ecb44b1&q=1&e=95c12902-023a-4b29-913c-87a467fe82d9&u=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-dev</a><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div></div>