<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Mar 9, 2017 at 11:22 AM Hal Finkel 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="gmail_msg">
On 03/09/2017 12:57 PM, Krzysztof Parzyszek wrote:<br class="gmail_msg">
> On 3/9/2017 12:47 PM, Hal Finkel wrote:<br class="gmail_msg">
>><br class="gmail_msg">
>> On 03/09/2017 12:28 PM, Krzysztof Parzyszek via llvm-dev wrote:<br class="gmail_msg">
>>> We could add intrinsics to extract/insert a bitfield, which would<br class="gmail_msg">
>>> simplify a lot of that bitwise logic.<br class="gmail_msg">
>><br class="gmail_msg">
>> But then you need to teach a bunch of places about how to simply them,<br class="gmail_msg">
>> fold using bitwise logic and other things that reduce demanded bits into<br class="gmail_msg">
>> them, etc. This seems like a difficult tradeoff </blockquote><div><br></div><div>It's a bit worse than that from what I've seen.</div><div><br></div><div>We have a fair amount of code that looks *like* bitfield accesses but is done manually. So we would have a serious canonicalization issue as well needing to canonicalize *toward* these intrinsics. =[</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
><br class="gmail_msg">
> Bitfield extraction/insertion generally does not simplify well with<br class="gmail_msg">
> surrounding arithmetic.<br class="gmail_msg">
<br class="gmail_msg">
Maybe. I've seen plenty of places where we've simplified bitfield<br class="gmail_msg">
extractions/insertions with other using/generating logic (masks, shifts,<br class="gmail_msg">
and the like).<br class="gmail_msg"></blockquote><div><br></div><div>We have had *numerous* test cases from benchmarks where combining basic bitfield math is important. So while in some cases it may not be important, in a number of cases it is and so I feel like we should design things to support reasonably comprehensive combining of the bitfield accesses.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
> The main generator of the bitwise manipulation is SROA</blockquote><div><br></div><div>?? Clang directly generates the bit insert and extract patterns as well?</div></div></div>