[PATCH] D149260: [AArch64] Emit FNMADD instead of FNEG(FMADD)

Matt Devereau via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 9 06:38:47 PDT 2023


MattDevereau added inline comments.


================
Comment at: llvm/include/llvm/CodeGen/MachineCombinerPattern.h:182-183
+
+  FNMADDS,
+  FNMADDD,
 };
----------------
sdesmalen wrote:
> Having two patterns, one for 32-bit values, and one for 64-bit values doesn't match what was done for FMSUB/FNMSUB. Can these be merged into 1 and use the register class used for the operands to determine which instruction to use?
I'm not sure what you mean? MachineCombinerPattern::FNMSUB isn't used in  `AArch64InstrInfo::genAlternativeCodeSequence` at all. The way FNMSUB is combined in this function has `MachineCombinerPattern::FMULSUBH_OP1` `MachineCombinerPattern::FMULSUBS_OP1` and `MachineCombinerPattern::FMULSUBD_OP1:` which all describe the number of bits. I'd need to do something like


```
auto RC = MRI.getRegClass(MAD->getOperand(0).getReg());
if RC == 64bit
  opc = FNMADDDrrr
else if RC == 32bit
  opc = FNMADDSrrr
```
which I can't see a clear example of


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149260



More information about the llvm-commits mailing list