[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