hotspot/src/cpu/x86/vm/x86.ad
changeset 41323 ddd5600d4762
parent 40040 7644f470d923
child 41333 ce08d64b41c7
equal deleted inserted replaced
41321:463ff7705f2f 41323:ddd5600d4762
  3111     __ pause();
  3111     __ pause();
  3112   %}
  3112   %}
  3113   ins_pipe(pipe_slow);
  3113   ins_pipe(pipe_slow);
  3114 %}
  3114 %}
  3115 
  3115 
       
  3116 // a * b + c
       
  3117 instruct fmaD_reg(regD a, regD b, regD c) %{
       
  3118   predicate(UseFMA);
       
  3119   match(Set c (FmaD  c (Binary a b)));
       
  3120   format %{ "fmasd $a,$b,$c\t# $c = $a * $b + $c" %}
       
  3121   ins_cost(150);
       
  3122   ins_encode %{
       
  3123     __ fmad($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister);
       
  3124   %}
       
  3125   ins_pipe( pipe_slow );
       
  3126 %}
       
  3127 
       
  3128 // a * b + c
       
  3129 instruct fmaF_reg(regF a, regF b, regF c) %{
       
  3130   predicate(UseFMA);
       
  3131   match(Set c (FmaF  c (Binary a b)));
       
  3132   format %{ "fmass $a,$b,$c\t# $c = $a * $b + $c" %}
       
  3133   ins_cost(150);
       
  3134   ins_encode %{
       
  3135     __ fmaf($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister);
       
  3136   %}
       
  3137   ins_pipe( pipe_slow );
       
  3138 %}
       
  3139 
  3116 // ====================VECTOR INSTRUCTIONS=====================================
  3140 // ====================VECTOR INSTRUCTIONS=====================================
  3117 
  3141 
  3118 // Load vectors (4 bytes long)
  3142 // Load vectors (4 bytes long)
  3119 instruct loadV4(vecS dst, memory mem) %{
  3143 instruct loadV4(vecS dst, memory mem) %{
  3120   predicate(n->as_LoadVector()->memory_size() == 4);
  3144   predicate(n->as_LoadVector()->memory_size() == 4);