src/cpu/x86/vm/x86_64.ad

changeset 506
3d62cb85208d
parent 435
a61af66fc99e
child 548
ba764ed4b6f2
     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));

mercurial