This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Transform (x / y) != 0 to x >=y and (x / y) == 0 to x < y if x, y are unsigned


Marc Glisse wrote:

> The question is whether, having computed c=a/b, it is cheaper to test a<b or c!=0. 
> I think it is usually the second one, but not for all types on all targets. Although since
> you mention VRP, it is easier to do further optimizations using the information a<b. 

No, a<b is always better. Division does have high latency and low throughput on
all modern cores, so rather than having to wait until the division finishes, you can
execute whatever depends on the comparison many cycles earlier.

Generally you want to avoid division as much as possible and when that fails
reduce any dependencies on the result of divisions.

Wilco

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]