--- a/hotspot/src/cpu/x86/vm/x86_64.ad Wed Mar 19 15:14:36 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad Wed Mar 19 15:33:25 2008 -0700
@@ -10098,6 +10098,7 @@
instruct convI2F_reg_reg(regF dst, rRegI src)
%{
+ predicate(!UseXmmI2F);
match(Set dst (ConvI2F src));
format %{ "cvtsi2ssl $dst, $src\t# i2f" %}
@@ -10118,6 +10119,7 @@
instruct convI2D_reg_reg(regD dst, rRegI src)
%{
+ predicate(!UseXmmI2D);
match(Set dst (ConvI2D src));
format %{ "cvtsi2sdl $dst, $src\t# i2d" %}
@@ -10136,6 +10138,34 @@
ins_pipe(pipe_slow); // XXX
%}
+instruct convXI2F_reg(regF dst, rRegI src)
+%{
+ predicate(UseXmmI2F);
+ match(Set dst (ConvI2F src));
+
+ format %{ "movdl $dst, $src\n\t"
+ "cvtdq2psl $dst, $dst\t# i2f" %}
+ ins_encode %{
+ __ movdl($dst$$XMMRegister, $src$$Register);
+ __ cvtdq2ps($dst$$XMMRegister, $dst$$XMMRegister);
+ %}
+ ins_pipe(pipe_slow); // XXX
+%}
+
+instruct convXI2D_reg(regD dst, rRegI src)
+%{
+ predicate(UseXmmI2D);
+ match(Set dst (ConvI2D src));
+
+ format %{ "movdl $dst, $src\n\t"
+ "cvtdq2pdl $dst, $dst\t# i2d" %}
+ ins_encode %{
+ __ movdl($dst$$XMMRegister, $src$$Register);
+ __ cvtdq2pd($dst$$XMMRegister, $dst$$XMMRegister);
+ %}
+ ins_pipe(pipe_slow); // XXX
+%}
+
instruct convL2F_reg_reg(regF dst, rRegL src)
%{
match(Set dst (ConvL2F src));