4156 }
4157
4158 return ideal_load;
4159 }
4160
4161 bool MatchRule::is_vector() const {
4162 static const char *vector_list[] = {
4163 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4164 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4165 "MulVS","MulVI","MulVL","MulVF","MulVD",
4166 "CMoveVD", "CMoveVF",
4167 "DivVF","DivVD",
4168 "AbsVF","AbsVD",
4169 "NegVF","NegVD",
4170 "SqrtVD","SqrtVF",
4171 "AndV" ,"XorV" ,"OrV",
4172 "AddReductionVI", "AddReductionVL",
4173 "AddReductionVF", "AddReductionVD",
4174 "MulReductionVI", "MulReductionVL",
4175 "MulReductionVF", "MulReductionVD",
4176 "LShiftCntV","RShiftCntV",
4177 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4178 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4179 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4180 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4181 "LoadVector","StoreVector",
4182 "FmaVD", "FmaVF","PopCountVI",
4183 // Next are not supported currently.
4184 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4185 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4186 };
4187 int cnt = sizeof(vector_list)/sizeof(char*);
4188 if (_rChild) {
4189 const char *opType = _rChild->_opType;
4190 for (int i=0; i<cnt; i++)
4191 if (strcmp(opType,vector_list[i]) == 0)
4192 return true;
4193 }
4194 return false;
4195 }
|
4156 }
4157
4158 return ideal_load;
4159 }
4160
4161 bool MatchRule::is_vector() const {
4162 static const char *vector_list[] = {
4163 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4164 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4165 "MulVS","MulVI","MulVL","MulVF","MulVD",
4166 "CMoveVD", "CMoveVF",
4167 "DivVF","DivVD",
4168 "AbsVF","AbsVD",
4169 "NegVF","NegVD",
4170 "SqrtVD","SqrtVF",
4171 "AndV" ,"XorV" ,"OrV",
4172 "AddReductionVI", "AddReductionVL",
4173 "AddReductionVF", "AddReductionVD",
4174 "MulReductionVI", "MulReductionVL",
4175 "MulReductionVF", "MulReductionVD",
4176 "MulAddVS2VI",
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 }
|