< prev index next >

src/share/vm/adlc/formssel.cpp

Print this page




4026         strcmp(opType,"ConvI2L")==0 ||
4027         strcmp(opType,"ConvL2D")==0 ||
4028         strcmp(opType,"ConvL2F")==0 ||
4029         strcmp(opType,"ConvL2I")==0 ||
4030         strcmp(opType,"DecodeN")==0 ||
4031         strcmp(opType,"EncodeP")==0 ||
4032         strcmp(opType,"EncodePKlass")==0 ||
4033         strcmp(opType,"DecodeNKlass")==0 ||
4034         strcmp(opType,"RoundDouble")==0 ||
4035         strcmp(opType,"RoundFloat")==0 ||
4036         strcmp(opType,"ReverseBytesI")==0 ||
4037         strcmp(opType,"ReverseBytesL")==0 ||
4038         strcmp(opType,"ReverseBytesUS")==0 ||
4039         strcmp(opType,"ReverseBytesS")==0 ||
4040         strcmp(opType,"ReplicateB")==0 ||
4041         strcmp(opType,"ReplicateS")==0 ||
4042         strcmp(opType,"ReplicateI")==0 ||
4043         strcmp(opType,"ReplicateL")==0 ||
4044         strcmp(opType,"ReplicateF")==0 ||
4045         strcmp(opType,"ReplicateD")==0 ||







4046         0 /* 0 to line up columns nicely */ )
4047       return 1;
4048   }
4049   return 0;
4050 }
4051 
4052 bool MatchRule::is_ideal_if() const {
4053   if( !_opType ) return false;
4054   return
4055     !strcmp(_opType,"If"            ) ||
4056     !strcmp(_opType,"CountedLoopEnd");
4057 }
4058 
4059 bool MatchRule::is_ideal_fastlock() const {
4060   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4061     return (strcmp(_rChild->_opType,"FastLock") == 0);
4062   }
4063   return false;
4064 }
4065 


4118 
4119 
4120 Form::DataType MatchRule::is_ideal_load() const {
4121   Form::DataType ideal_load = Form::none;
4122 
4123   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4124     const char *opType = _rChild->_opType;
4125     ideal_load = is_load_from_memory(opType);
4126   }
4127 
4128   return ideal_load;
4129 }
4130 
4131 bool MatchRule::is_vector() const {
4132   static const char *vector_list[] = {
4133     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4134     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4135     "MulVS","MulVI","MulVF","MulVD",
4136     "DivVF","DivVD",
4137     "AndV" ,"XorV" ,"OrV",




4138     "LShiftCntV","RShiftCntV",
4139     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4140     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4141     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4142     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4143     "LoadVector","StoreVector",
4144     // Next are not supported currently.
4145     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4146     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4147   };
4148   int cnt = sizeof(vector_list)/sizeof(char*);
4149   if (_rChild) {
4150     const char  *opType = _rChild->_opType;
4151     for (int i=0; i<cnt; i++)
4152       if (strcmp(opType,vector_list[i]) == 0)
4153         return true;
4154   }
4155   return false;
4156 }
4157 




4026         strcmp(opType,"ConvI2L")==0 ||
4027         strcmp(opType,"ConvL2D")==0 ||
4028         strcmp(opType,"ConvL2F")==0 ||
4029         strcmp(opType,"ConvL2I")==0 ||
4030         strcmp(opType,"DecodeN")==0 ||
4031         strcmp(opType,"EncodeP")==0 ||
4032         strcmp(opType,"EncodePKlass")==0 ||
4033         strcmp(opType,"DecodeNKlass")==0 ||
4034         strcmp(opType,"RoundDouble")==0 ||
4035         strcmp(opType,"RoundFloat")==0 ||
4036         strcmp(opType,"ReverseBytesI")==0 ||
4037         strcmp(opType,"ReverseBytesL")==0 ||
4038         strcmp(opType,"ReverseBytesUS")==0 ||
4039         strcmp(opType,"ReverseBytesS")==0 ||
4040         strcmp(opType,"ReplicateB")==0 ||
4041         strcmp(opType,"ReplicateS")==0 ||
4042         strcmp(opType,"ReplicateI")==0 ||
4043         strcmp(opType,"ReplicateL")==0 ||
4044         strcmp(opType,"ReplicateF")==0 ||
4045         strcmp(opType,"ReplicateD")==0 ||
4046         strcmp(opType,"AddReductionVI") == 0 ||
4047         strcmp(opType,"AddReductionVL") == 0 ||
4048         strcmp(opType,"AddReductionVF")==0 ||
4049         strcmp(opType,"AddReductionVD")==0 ||
4050         strcmp(opType,"MulReductionVI") == 0 ||
4051         strcmp(opType,"MulReductionVF")==0 ||
4052         strcmp(opType,"MulReductionVD")== 0 ||
4053         0 /* 0 to line up columns nicely */ )
4054       return 1;
4055   }
4056   return 0;
4057 }
4058 
4059 bool MatchRule::is_ideal_if() const {
4060   if( !_opType ) return false;
4061   return
4062     !strcmp(_opType,"If"            ) ||
4063     !strcmp(_opType,"CountedLoopEnd");
4064 }
4065 
4066 bool MatchRule::is_ideal_fastlock() const {
4067   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4068     return (strcmp(_rChild->_opType,"FastLock") == 0);
4069   }
4070   return false;
4071 }
4072 


4125 
4126 
4127 Form::DataType MatchRule::is_ideal_load() const {
4128   Form::DataType ideal_load = Form::none;
4129 
4130   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4131     const char *opType = _rChild->_opType;
4132     ideal_load = is_load_from_memory(opType);
4133   }
4134 
4135   return ideal_load;
4136 }
4137 
4138 bool MatchRule::is_vector() const {
4139   static const char *vector_list[] = {
4140     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4141     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4142     "MulVS","MulVI","MulVF","MulVD",
4143     "DivVF","DivVD",
4144     "AndV" ,"XorV" ,"OrV",
4145     "AddReductionVI", "AddReductionVL",
4146     "AddReductionVF", "AddReductionVD",
4147     "MulReductionVI",
4148     "MulReductionVF", "MulReductionVD",
4149     "LShiftCntV","RShiftCntV",
4150     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4151     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4152     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4153     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4154     "LoadVector","StoreVector",
4155     // Next are not supported currently.
4156     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4157     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4158   };
4159   int cnt = sizeof(vector_list)/sizeof(char*);
4160   if (_rChild) {
4161     const char  *opType = _rChild->_opType;
4162     for (int i=0; i<cnt; i++)
4163       if (strcmp(opType,vector_list[i]) == 0)
4164         return true;
4165   }
4166   return false;
4167 }
4168 


< prev index next >