comparison src/cpu/sparc/vm/sparc.ad @ 732:fb4c18a2ec66

6833573: C2 sparc: assert(c < 64 && (c & 1) == 0,"bad double float register") Reviewed-by: twisti
author never
date Fri, 24 Apr 2009 15:08:30 -0700
parents 6b2273dd6fa9
children 93c14e5562c4
comparison
equal deleted inserted replaced
731:aa92a90b1cc6 732:fb4c18a2ec66
2792 address double_address = __ double_constant(dval); 2792 address double_address = __ double_constant(dval);
2793 RelocationHolder rspec = internal_word_Relocation::spec(double_address); 2793 RelocationHolder rspec = internal_word_Relocation::spec(double_address);
2794 AddressLiteral addrlit(double_address, rspec); 2794 AddressLiteral addrlit(double_address, rspec);
2795 2795
2796 __ sethi(addrlit, $tmp$$Register); 2796 __ sethi(addrlit, $tmp$$Register);
2797 __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec); 2797 // XXX This is a quick fix for 6833573.
2798 //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
2799 __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
2798 %} 2800 %}
2799 2801
2800 // Compiler ensures base is doubleword aligned and cnt is count of doublewords 2802 // Compiler ensures base is doubleword aligned and cnt is count of doublewords
2801 enc_class enc_Clear_Array(iRegX cnt, iRegP base, iRegX temp) %{ 2803 enc_class enc_Clear_Array(iRegX cnt, iRegP base, iRegX temp) %{
2802 MacroAssembler _masm(&cbuf); 2804 MacroAssembler _masm(&cbuf);
5900 address double_address = __ double_constant($src$$constant); 5902 address double_address = __ double_constant($src$$constant);
5901 RelocationHolder rspec = internal_word_Relocation::spec(double_address); 5903 RelocationHolder rspec = internal_word_Relocation::spec(double_address);
5902 AddressLiteral addrlit(double_address, rspec); 5904 AddressLiteral addrlit(double_address, rspec);
5903 5905
5904 __ sethi(addrlit, $tmp$$Register); 5906 __ sethi(addrlit, $tmp$$Register);
5905 __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec); 5907 // XXX This is a quick fix for 6833573.
5908 //__ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), $dst$$FloatRegister, rspec);
5909 __ ldf(FloatRegisterImpl::D, $tmp$$Register, addrlit.low10(), as_DoubleFloatRegister($dst$$reg), rspec);
5906 %} 5910 %}
5907 ins_pipe(loadConFD); 5911 ins_pipe(loadConFD);
5908 %} 5912 %}
5909 5913
5910 // Prefetch instructions. 5914 // Prefetch instructions.