1.1 --- a/src/cpu/x86/vm/x86_64.ad Wed Mar 19 15:14:36 2008 -0700 1.2 +++ b/src/cpu/x86/vm/x86_64.ad Wed Mar 19 15:33:25 2008 -0700 1.3 @@ -10098,6 +10098,7 @@ 1.4 1.5 instruct convI2F_reg_reg(regF dst, rRegI src) 1.6 %{ 1.7 + predicate(!UseXmmI2F); 1.8 match(Set dst (ConvI2F src)); 1.9 1.10 format %{ "cvtsi2ssl $dst, $src\t# i2f" %} 1.11 @@ -10118,6 +10119,7 @@ 1.12 1.13 instruct convI2D_reg_reg(regD dst, rRegI src) 1.14 %{ 1.15 + predicate(!UseXmmI2D); 1.16 match(Set dst (ConvI2D src)); 1.17 1.18 format %{ "cvtsi2sdl $dst, $src\t# i2d" %} 1.19 @@ -10136,6 +10138,34 @@ 1.20 ins_pipe(pipe_slow); // XXX 1.21 %} 1.22 1.23 +instruct convXI2F_reg(regF dst, rRegI src) 1.24 +%{ 1.25 + predicate(UseXmmI2F); 1.26 + match(Set dst (ConvI2F src)); 1.27 + 1.28 + format %{ "movdl $dst, $src\n\t" 1.29 + "cvtdq2psl $dst, $dst\t# i2f" %} 1.30 + ins_encode %{ 1.31 + __ movdl($dst$$XMMRegister, $src$$Register); 1.32 + __ cvtdq2ps($dst$$XMMRegister, $dst$$XMMRegister); 1.33 + %} 1.34 + ins_pipe(pipe_slow); // XXX 1.35 +%} 1.36 + 1.37 +instruct convXI2D_reg(regD dst, rRegI src) 1.38 +%{ 1.39 + predicate(UseXmmI2D); 1.40 + match(Set dst (ConvI2D src)); 1.41 + 1.42 + format %{ "movdl $dst, $src\n\t" 1.43 + "cvtdq2pdl $dst, $dst\t# i2d" %} 1.44 + ins_encode %{ 1.45 + __ movdl($dst$$XMMRegister, $src$$Register); 1.46 + __ cvtdq2pd($dst$$XMMRegister, $dst$$XMMRegister); 1.47 + %} 1.48 + ins_pipe(pipe_slow); // XXX 1.49 +%} 1.50 + 1.51 instruct convL2F_reg_reg(regF dst, rRegL src) 1.52 %{ 1.53 match(Set dst (ConvL2F src));