[PATCH] D30469: [PowerPC] Expand compare instructions to equivalent GPR code sequences.
Tony Jiang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 3 14:52:16 PST 2017
jtony added a comment.
In https://reviews.llvm.org/D30469#691316, @inouehrs wrote:
> Comparison is often used with bit operators, like an example below.
> In this example, as long as I test, the transformation is applied only when POS is 0; cmpd + isel are used for cases with POS > 0.
> I feel it is nice if we can support comparisons used with bit operators.
>
> const int POS = 1;
> long set_flag(long a, long b, long flags) {
> flags |= ((a == b) << POS);
> return flags;
> }
>
Hi Hiroshi, that happens because current the SETEQ is implemented in the PPCInstrInfo.td file, which is downstream of DAG2DAG slection, I checked the debug info for the test case you provided here. The zero_extend(setcc) pattern is got converted to select_cc before it has a chance to use the pattern that I added in td file. One possible solution is do that in the DAG2DAG stage like all the other patterns in the CWG, this is a similar issue Nemanja and I have encountered for these pattern in D.2 of CWG. And there is also a new commit from trunk changes the conversion behavior from setcc to select_cc. I haven't tried what is the influence of that commit so I am not sure whether we should move this implementation here to the PPCISelDAG2DAG.cpp file or not. I will let Kit and Nemanja decide.
https://reviews.llvm.org/D30469
More information about the llvm-commits
mailing list