Mercurial > hg > graal-jvmci-8
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)); |