Hi! Whoops I missed following up to this.
On Mon, Nov 21, 2022 at 10:01:14AM +0800, Kewen.Lin wrote: > on 2022/11/18 23:10, Segher Boessenkool wrote: > > ge is nasty for float, it means something different with and without > > -ffast-math (with fast-math ge means not lt, le means not gt; both can > > be done with a simple single condition, no cror needed. (Compare to ne > > which is the same with and without -ffast-math, that is because it has a > > "not" in its definition!) > > It's true for scalar float comparison, but the context here is for vector > comparison, the result of comparison is still vector (of boolean), and we > have the corresponding vector comparison instruction for ge, so I think it > should be fine here. It is fine if all contexts it is used in allow ge insns, sure. But you have to make sure that is true; ge still is nasty, it truly means something different with fastmath (which applies to vector float just\ the same as it does to scalar float). > > Thanks for the explanation! > > > > Can you do this in multiple steps, which will make it much easier to > > review, and to spot the problem if some unexpected problem shows up? > > Sure, I'll try my best to separate it into some steps and show how it > evolves gradually. If you can make the bulk of the series not actually change code generation, just rearrange and massage the compiler code, that is much easier to review (and it also helps to spot the problems in if there are regressions, as a bonus). Cheers, Segher