[PATCH] D31851: [PowerPC] Eliminate compares - add handling for logical operations without the use of condition registers

Eric Christopher via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 23 11:46:51 PDT 2017


echristo added inline comments.


================
Comment at: lib/Target/PowerPC/PPCISelDAGToDAG.cpp:280
     enum SetccInGPROpts { ZExtOrig, ZExtInvert, SExtOrig, SExtInvert };
+    enum LogicalOpsInGPR { KeepInGPR, ExtractToCR };
 
----------------
nemanjai wrote:
> echristo wrote:
> > Part of asking for the enum is wondering why it's necessary. It seems odd to say "getLogicOpInGPR" to want to know whether or not to put something in a GPR.
> That's a good point. Perhaps the naming is a poor choice. I could rename it to `performLogicOpInGPR()`.
> The idea would be to convey the fact that this simply defers moving the data out of a GPR. What it does is take something like:
> `(and (i1 (setcc %a, %b, CC), (setcc %c, %d, CC2)))` and convert it to a sequence that does the comparisons and the logical operation in a GPR.
> That of course still leaves the question of whether we want the result of the logical operation itself to stay in a GPR (for further extended operations) or to be moved out to a CR (for use in branches, ISEL, etc.).
> 
> So I think maybe renaming the function and/or providing a clearer comment as to what's happening might be the right choice here. What do you think?
I'd probably just separate out the performLogicOptInGPR and then just add code where you'd pass the bool argument to pull it into a CR if you need it after the call?


Repository:
  rL LLVM

https://reviews.llvm.org/D31851





More information about the llvm-commits mailing list