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