[PATCH] D127275: [MVE] Fold fadd(select(..., +0.0)) into a predicated fadd
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 8 08:53:54 PDT 2022
spatel added inline comments.
================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:16729
+
+ SDNodeFlags SelFlags = Op1->getFlags();
+ if (!isIdentitySplat(Op1.getOperand(2), SelFlags.hasNoSignedZeros()))
----------------
This is not strictly correct. If the 'fadd' doesn't have 'nsz', then the transform results in an 'nsz' value where the original sequence did not.
The transform is safe as long as the 'fadd' has 'nsz', so that's the flag we should use to enable the transform.
We can propagate the fadd's 'nsz' to the new 'select' even if the original 'select' was not 'nsz' itself.
It's confusing, but you can run examples with Alive2 to see what's valid:
https://alive2.llvm.org/ce/z/Z-cuhQ
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D127275/new/
https://reviews.llvm.org/D127275
More information about the llvm-commits
mailing list