[PATCH] D127254: [SelectionDAGISel] Chain any mayRaiseFPException instruction created from a strict FP node

Nemanja Ivanovic via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 7 12:07:49 PDT 2022


nemanjai added a comment.

In D127254#3572361 <https://reviews.llvm.org/D127254#3572361>, @craig.topper wrote:

>> How many PowerPC patterns need the CSE code?  Would it make sense to get rid of the CSE code, and just reimplement the relevant patterns using custom lowering, or something like that?
>
> It's basically anything that uses CRNotPat in PPCInstrInfo.td. This is because `crnot` is defined as
>
>   def crnot : OutPatFrag<(ops node:$in),
>                         (CRNOR $in, $in)>;
>
> which replicates the $in. I think this is quite a few patterns to custom select.
>
> I tried replacing `CRNOR $in, $in` with `CRXOR $in, (CRSET)` and rely on PPCDAGToDAGISel::PeepholeCROps to turn it into a CRNOR. This works except at -O0.
>
> Another option could be to add a CRNOT CodeGenOnly unary opcode.
>
> @nemanjai what do you think?

I am really sorry about the delay in responding to this. I think a unary pseudo for `CRNOT` is a perfectly reasonable solution and is in line with other instructions for which we wanted to avoid duplicating inputs that have chains (such as `XXPERMDIs`, etc.).

I'll put up a patch to do this ASAP.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127254/new/

https://reviews.llvm.org/D127254



More information about the llvm-commits mailing list