hotspot/src/cpu/x86/vm/x86_64.ad
changeset 22873 74aaad871363
parent 22855 d637fd28a6c3
parent 22513 dc47bc8ecb75
child 22910 88c3369b5967
equal deleted inserted replaced
22872:b6902ee5bc8d 22873:74aaad871363
  3092   op_cost(10);
  3092   op_cost(10);
  3093   format %{ %}
  3093   format %{ %}
  3094   interface(CONST_INTER);
  3094   interface(CONST_INTER);
  3095 %}
  3095 %}
  3096 
  3096 
       
  3097 // Int Immediate non-negative
       
  3098 operand immU31()
       
  3099 %{
       
  3100   predicate(n->get_int() >= 0);
       
  3101   match(ConI);
       
  3102 
       
  3103   op_cost(0);
       
  3104   format %{ %}
       
  3105   interface(CONST_INTER);
       
  3106 %}
       
  3107 
  3097 // Constant for long shifts
  3108 // Constant for long shifts
  3098 operand immI_32()
  3109 operand immI_32()
  3099 %{
  3110 %{
  3100   predicate( n->get_int() == 32 );
  3111   predicate( n->get_int() == 32 );
  3101   match(ConI);
  3112   match(ConI);
  5048     __ movzwq($dst$$Register, $mem$$Address);
  5059     __ movzwq($dst$$Register, $mem$$Address);
  5049   %}
  5060   %}
  5050   ins_pipe(ialu_reg_mem);
  5061   ins_pipe(ialu_reg_mem);
  5051 %}
  5062 %}
  5052 
  5063 
  5053 // Load Integer with a 32-bit mask into Long Register
  5064 // Load Integer with a 31-bit mask into Long Register
  5054 instruct loadI2L_immI(rRegL dst, memory mem, immI mask, rFlagsReg cr) %{
  5065 instruct loadI2L_immU31(rRegL dst, memory mem, immU31 mask, rFlagsReg cr) %{
  5055   match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
  5066   match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
  5056   effect(KILL cr);
  5067   effect(KILL cr);
  5057 
  5068 
  5058   format %{ "movl    $dst, $mem\t# int & 32-bit mask -> long\n\t"
  5069   format %{ "movl    $dst, $mem\t# int & 31-bit mask -> long\n\t"
  5059             "andl    $dst, $mask" %}
  5070             "andl    $dst, $mask" %}
  5060   ins_encode %{
  5071   ins_encode %{
  5061     Register Rdst = $dst$$Register;
  5072     Register Rdst = $dst$$Register;
  5062     __ movl(Rdst, $mem$$Address);
  5073     __ movl(Rdst, $mem$$Address);
  5063     __ andl(Rdst, $mask$$constant);
  5074     __ andl(Rdst, $mask$$constant);