< prev index next >

src/share/vm/adlc/formssel.cpp

Print this page
rev 9026 : 8138583: aarch64: add support for vectorizing fabs/fneg
Reviewed-by: aph


4126 }
4127 
4128 
4129 Form::DataType MatchRule::is_ideal_load() const {
4130   Form::DataType ideal_load = Form::none;
4131 
4132   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4133     const char *opType = _rChild->_opType;
4134     ideal_load = is_load_from_memory(opType);
4135   }
4136 
4137   return ideal_load;
4138 }
4139 
4140 bool MatchRule::is_vector() const {
4141   static const char *vector_list[] = {
4142     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4143     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4144     "MulVS","MulVI","MulVL","MulVF","MulVD",
4145     "DivVF","DivVD",


4146     "SqrtVD",
4147     "AndV" ,"XorV" ,"OrV",
4148     "AddReductionVI", "AddReductionVL",
4149     "AddReductionVF", "AddReductionVD",
4150     "MulReductionVI", "MulReductionVL",
4151     "MulReductionVF", "MulReductionVD",
4152     "LShiftCntV","RShiftCntV",
4153     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4154     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4155     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4156     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4157     "LoadVector","StoreVector",
4158     // Next are not supported currently.
4159     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4160     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4161   };
4162   int cnt = sizeof(vector_list)/sizeof(char*);
4163   if (_rChild) {
4164     const char  *opType = _rChild->_opType;
4165     for (int i=0; i<cnt; i++)




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


< prev index next >