src/cpu/sparc/vm/assembler_sparc.inline.hpp

changeset 1441
dcf03e02b020
parent 1162
6b2273dd6fa9
child 1858
c640000b7cc1
     1.1 --- a/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Wed Sep 30 13:25:39 2009 -0700
     1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Tue Oct 06 02:11:49 2009 -0700
     1.3 @@ -99,6 +99,11 @@
     1.4  inline void Assembler::jmpl( Register s1, Register s2, Register d                          ) { emit_long( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | rs2(s2));  has_delay_slot(); }
     1.5  inline void Assembler::jmpl( Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec);  has_delay_slot(); }
     1.6  
     1.7 +inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, RegisterOrConstant s2, FloatRegister d) {
     1.8 +  if (s2.is_register()) ldf(w, s1, s2.as_register(), d);
     1.9 +  else                  ldf(w, s1, s2.as_constant(), d);
    1.10 +}
    1.11 +
    1.12  inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); }
    1.13  inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); }
    1.14  
    1.15 @@ -224,6 +229,11 @@
    1.16  
    1.17    // pp 222
    1.18  
    1.19 +inline void Assembler::stf(    FloatRegisterImpl::Width w, FloatRegister d, Register s1, RegisterOrConstant s2) {
    1.20 +  if (s2.is_register()) stf(w, d, s1, s2.as_register());
    1.21 +  else                  stf(w, d, s1, s2.as_constant());
    1.22 +}
    1.23 +
    1.24  inline void Assembler::stf(    FloatRegisterImpl::Width w, FloatRegister d, Register s1, Register s2) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | rs2(s2) ); }
    1.25  inline void Assembler::stf(    FloatRegisterImpl::Width w, FloatRegister d, Register s1, int simm13a) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); }
    1.26  
    1.27 @@ -284,6 +294,7 @@
    1.28  
    1.29  inline void Assembler::stb(Register d, Register s1, RegisterOrConstant s2) { stb(d, Address(s1, s2)); }
    1.30  inline void Assembler::sth(Register d, Register s1, RegisterOrConstant s2) { sth(d, Address(s1, s2)); }
    1.31 +inline void Assembler::stw(Register d, Register s1, RegisterOrConstant s2) { stw(d, Address(s1, s2)); }
    1.32  inline void Assembler::stx(Register d, Register s1, RegisterOrConstant s2) { stx(d, Address(s1, s2)); }
    1.33  inline void Assembler::std(Register d, Register s1, RegisterOrConstant s2) { std(d, Address(s1, s2)); }
    1.34  inline void Assembler::st( Register d, Register s1, RegisterOrConstant s2) { st( d, Address(s1, s2)); }

mercurial