Messages in this thread | | | From | "Christophe JAILLET" <> | Subject | Re: [PATCH] page: get_order() optimization | Date | Fri, 1 Apr 2011 21:40:16 +0200 |
| |
Hi,
why not have something like : > + order = 0; > + if (size != 0) > + order = (__builtin_clzl(size) ^ (BITS_PER_LONG - 1));
we avoid the "complex" computation when not necessary. No ?
Best regards, Christophe JAILLET
"Maksym Planeta" <mcsim.planeta@gmail.com> a écrit dans le message de news:1301685493-2567-1-git-send-email-mcsim.planeta@gmail.com... > Loop was repalaced with __builtin_clz(). This still allows to precompute > constants, but on some architectures it uses special instruction to > calculate order. > > Signed-off-by: Maksym Planeta <mcsim.planeta@gmail.com> > --- > include/asm-generic/getorder.h | 8 +++----- > 1 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/include/asm-generic/getorder.h b/include/asm-generic/getorder.h > index 67e7245..fe8020c 100644 > --- a/include/asm-generic/getorder.h > +++ b/include/asm-generic/getorder.h > @@ -11,11 +11,9 @@ static inline __attribute_const__ int get_order(unsigned long size) > int order; > > size = (size - 1) >> (PAGE_SHIFT - 1); > - order = -1; > - do { > - size >>= 1; > - order++; > - } while (size); > + order = (__builtin_clzl(size) ^ (BITS_PER_LONG - 1)); > + if (size == 0) > + order = 0; > return order; > } > > -- > 1.7.2.3 >
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |