Request for reviews (L): 6823354: Add intrinsics for{Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
Christian Thalinger
Christian.Thalinger at Sun.COM
Tue May 5 01:57:55 PDT 2009
On Mon, 2009-05-04 at 14:36 -0700, Vladimir Kozlov wrote:
> Christian,
>
> assembler_x86.hpp - could you use one #ifdef ?
>
> +
> + #ifdef _LP64
> + void bsfq(Register dst, Register src);
> + #endif
> +
> + void bsrl(Register dst, Register src);
> +
> + #ifdef _LP64
> + void bsrq(Register dst, Register src);
> + #endif
Sure. I just followed the style in the file, where all methods are
strictly ordered.
> x86_32.ad - Why you did not remove TEMP dst? Do you need it?
>
> + effect(TEMP dst
I think I kept it because I'm not sure if one register of a long
register pair can be the same as the dst register. Can it?
> connode.cpp - new Ideal methods should be Value methods since
> it is the value transformation and it misses checks for Top:
>
> const Type* CountLeadingZerosINode::Value( PhaseTransform *phase ) const {
> const Type *t = phase->type( in(1) );
> if( t == Type::TOP ) return Type::TOP;
> const TypeInt *ti = t->isa_int();
> if (ti && ti->is_con()) {
I see. I'm currently trying to change that but I have some problems.
Could you explain a little how Value() is supposed to work?
-- Christian
More information about the hotspot-compiler-dev
mailing list