4157 static const char *vector_list[] = {
4158 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4159 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4160 "MulVS","MulVI","MulVL","MulVF","MulVD",
4161 "CMoveVD",
4162 "DivVF","DivVD",
4163 "AbsVF","AbsVD",
4164 "NegVF","NegVD",
4165 "SqrtVD",
4166 "AndV" ,"XorV" ,"OrV",
4167 "AddReductionVI", "AddReductionVL",
4168 "AddReductionVF", "AddReductionVD",
4169 "MulReductionVI", "MulReductionVL",
4170 "MulReductionVF", "MulReductionVD",
4171 "LShiftCntV","RShiftCntV",
4172 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4173 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4174 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4175 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4176 "LoadVector","StoreVector",
4177 // Next are not supported currently.
4178 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4179 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4180 };
4181 int cnt = sizeof(vector_list)/sizeof(char*);
4182 if (_rChild) {
4183 const char *opType = _rChild->_opType;
4184 for (int i=0; i<cnt; i++)
4185 if (strcmp(opType,vector_list[i]) == 0)
4186 return true;
4187 }
4188 return false;
4189 }
4190
4191
4192 bool MatchRule::skip_antidep_check() const {
4193 // Some loads operate on what is effectively immutable memory so we
4194 // should skip the anti dep computations. For some of these nodes
4195 // the rewritable field keeps the anti dep logic from triggering but
4196 // for certain kinds of LoadKlass it does not since they are
|
4157 static const char *vector_list[] = {
4158 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4159 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4160 "MulVS","MulVI","MulVL","MulVF","MulVD",
4161 "CMoveVD",
4162 "DivVF","DivVD",
4163 "AbsVF","AbsVD",
4164 "NegVF","NegVD",
4165 "SqrtVD",
4166 "AndV" ,"XorV" ,"OrV",
4167 "AddReductionVI", "AddReductionVL",
4168 "AddReductionVF", "AddReductionVD",
4169 "MulReductionVI", "MulReductionVL",
4170 "MulReductionVF", "MulReductionVD",
4171 "LShiftCntV","RShiftCntV",
4172 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4173 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4174 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4175 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4176 "LoadVector","StoreVector",
4177 "FmaVD", "FmaVF",
4178 // Next are not supported currently.
4179 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4180 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4181 };
4182 int cnt = sizeof(vector_list)/sizeof(char*);
4183 if (_rChild) {
4184 const char *opType = _rChild->_opType;
4185 for (int i=0; i<cnt; i++)
4186 if (strcmp(opType,vector_list[i]) == 0)
4187 return true;
4188 }
4189 return false;
4190 }
4191
4192
4193 bool MatchRule::skip_antidep_check() const {
4194 // Some loads operate on what is effectively immutable memory so we
4195 // should skip the anti dep computations. For some of these nodes
4196 // the rewritable field keeps the anti dep logic from triggering but
4197 // for certain kinds of LoadKlass it does not since they are
|