[PATCH] D76901: [AArch64][SVE] Add support for boolean logic and fcmp.

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 27 16:00:05 PDT 2020


efriedma marked an inline comment as done.
efriedma added inline comments.


================
Comment at: llvm/lib/Target/AArch64/SVEInstrFormats.td:1369
   def : SVE_3_Op_Pat<nxv2i1, op, nxv2i1, nxv2i1, nxv2i1, !cast<Instruction>(NAME)>;
+  def : Pat<(nxv2i1 (op_nopred (nxv2i1 PPRAny:$Pn), (nxv2i1 PPRAny:$Pm))),
+            (!cast<Instruction>(NAME) (PTRUE_D 31), PPRAny:$Pn, PPRAny:$Pm)>;
----------------
cameron.mcinally wrote:
> efriedma wrote:
> > sdesmalen wrote:
> > > Do we want to create a `SVE_2_Op_<..>_Pat` or something for these? There will be other instructions where this would be useful as well.
> > > 
> > > nit: please reverse the order so it matches the patterns straight above it.
> > I'm not sure what that would look like.  Are you proposing something like SVE_2_Op_PTRUE_H_Pat/SVE_2_Op_PTRUE_S_Pat/etc.?
> There's something similar in D71712:
> 
> ```
> class SVE_2_Op_AllActive_Pat<ValueType vtd, SDPatternOperator op, ValueType vt1,
>                              ValueType vt2, Instruction inst, Instruction ptrue>
> : Pat<(vtd (op vt1:$Op1, vt2:$Op2)),
>       (inst (ptrue 31), $Op1, $Op2)>;
> ```
> 
> Seems like a good fit, but I'm not sure...
So this would be written like the following?

```
  def : SVE_2_Op_AllActive_Pat<nxv2i1, op_nopred, nxv2i1, nxv2i1,
                               !cast<Instruction>(NAME), PTRUE_D>;
```

It doesn't seem much better than what I've written, but okay, I guess.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76901





More information about the llvm-commits mailing list