[PATCH] D150249: [X86] Improve handling on zero constant for fminimum/fmaximum lowering

Evgenii Kudriashov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 11 05:15:04 PDT 2023


e-kud added inline comments.


================
Comment at: llvm/test/CodeGen/X86/fminimum-fmaximum.ll:1140
 ; X86-NEXT:    retl
   %r = call <2 x double> @llvm.minimum.v2f64(<2 x double> %x, <2 x double> <double 0., double 5.>)
   ret <2 x double> %r
----------------
skatkov wrote:
> e-kud wrote:
> > I think this test shows that a predicate //is not preferred zero// should be more generic than // is opposite zero// (in context of constant vectors).
> I will modify test to use constant 0.f and -0.f to cover both not a preferred zero and not an opposite zero.
> The intention of the test is to check that even if any of operands is zero we need all of them zero of the same sign.
Sorry, my intentions were unclear. I mean in case of `min(%x, <0, 5>)` we need to generate a single instruction `min(<0, 5>, %x)`. But we generate all kinds of checks instead. This happens because we special case only `<0, 0, ...>` for `min`. Instead we can check something like "a constant vector consisted of not preferred zero" this will cover `<0, 0, ...>` as well as `<0, 5>`.


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

https://reviews.llvm.org/D150249



More information about the llvm-commits mailing list