comparison src/cpu/sparc/vm/sparc.ad @ 4003:4bac06a82bc3

7100757: The BitSet.nextSetBit() produces incorrect result in 32bit VM on Sparc Summary: Instruction countTrailingZerosL() should use iRegIsafe dst register since it is used in long arithmetic. Reviewed-by: never, twisti
author kvn
date Fri, 14 Oct 2011 10:07:28 -0700
parents a64d352d1118
children d8cb48376797
comparison
equal deleted inserted replaced
4002:a786fdc79c5f 4003:4bac06a82bc3
10474 __ popc(Rdst, Rdst); 10474 __ popc(Rdst, Rdst);
10475 %} 10475 %}
10476 ins_pipe(ialu_reg); 10476 ins_pipe(ialu_reg);
10477 %} 10477 %}
10478 10478
10479 instruct countTrailingZerosL(iRegI dst, iRegL src, flagsReg cr) %{ 10479 instruct countTrailingZerosL(iRegIsafe dst, iRegL src, flagsReg cr) %{
10480 predicate(UsePopCountInstruction); // See Matcher::match_rule_supported 10480 predicate(UsePopCountInstruction); // See Matcher::match_rule_supported
10481 match(Set dst (CountTrailingZerosL src)); 10481 match(Set dst (CountTrailingZerosL src));
10482 effect(TEMP dst, KILL cr); 10482 effect(TEMP dst, KILL cr);
10483 10483
10484 // return popc(~x & (x - 1)); 10484 // return popc(~x & (x - 1));