[llvm-dev] Rotates, once again
John Regehr via llvm-dev
llvm-dev at lists.llvm.org
Thu May 17 16:23:55 PDT 2018
Thanks Sanjay!
At this point the cost/benefit tradeoff for rotate intrinsics seems
pretty good.
John
On 05/17/2018 11:14 AM, Sanjay Patel wrote:
> A rotate intrinsic should be relatively close in cost/complexity to the
> existing bswap.
>
> A grep of intrinsic::bswap says we'd probably add code in:
> InstCombine
> InstructionSimplify
> ConstantFolding
> DemandedBits
> ValueTracking
> VectorUtils
> SelectionDAGBuilder
>
> But I don't think it's fair to view those additions as pure added cost.
> As an example, consider that we have to add hacks to EarlyCSE to
> recognize multi-IR-instruction min/max/abs patterns. Intrinsics just
> work as-is there. So if you search for 'matchSelectPattern', you get an
> idea (I see 32 hits in 10 files) of the cost of *not* having intrinsics
> for those operations that we've decided are not worthy of intrinsics.
>
>
> On Wed, May 16, 2018 at 2:20 PM, John Regehr via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
> On 5/16/18 1:58 PM, Sanjay Patel via llvm-dev wrote:
>
> An informal metric might be: if the operation is supported as a
> primitive op or built-in in source languages and it is supported
> as a single target instruction, can we guarantee that 1-to-1
> translation through optimization?
>
>
> It seems perfectly reasonable for LLVM users to expect this to
> happen reliably.
>
> I'd like to take a look at the other side of the equation: the cost
> of adding a new intrinsic in terms of teaching passes to see through
> it, so we don't lose optimizations that worked before the intrinsic
> was added.
>
> For example, clearly ValueTracking needs a few lines added so that
> computeKnownBits and friends don't get stopped by a rotate. Anyone
> have a reasonably complete list of files that need similar changes?
>
> John
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>
>
More information about the llvm-dev
mailing list