4032
4033
4034 Form::DataType MatchRule::is_ideal_load() const {
4035 Form::DataType ideal_load = Form::none;
4036
4037 if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4038 const char *opType = _rChild->_opType;
4039 ideal_load = is_load_from_memory(opType);
4040 }
4041
4042 return ideal_load;
4043 }
4044
4045 bool MatchRule::is_vector() const {
4046 static const char *vector_list[] = {
4047 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4048 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4049 "MulVS","MulVI","MulVF","MulVD",
4050 "DivVF","DivVD",
4051 "AndV" ,"XorV" ,"OrV",
4052 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4053 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4054 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4055 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4056 "LoadVector","StoreVector",
4057 // Next are not supported currently.
4058 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4059 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4060 };
4061 int cnt = sizeof(vector_list)/sizeof(char*);
4062 if (_rChild) {
4063 const char *opType = _rChild->_opType;
4064 for (int i=0; i<cnt; i++)
4065 if (strcmp(opType,vector_list[i]) == 0)
4066 return true;
4067 }
4068 return false;
4069 }
4070
4071
|
4032
4033
4034 Form::DataType MatchRule::is_ideal_load() const {
4035 Form::DataType ideal_load = Form::none;
4036
4037 if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4038 const char *opType = _rChild->_opType;
4039 ideal_load = is_load_from_memory(opType);
4040 }
4041
4042 return ideal_load;
4043 }
4044
4045 bool MatchRule::is_vector() const {
4046 static const char *vector_list[] = {
4047 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4048 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4049 "MulVS","MulVI","MulVF","MulVD",
4050 "DivVF","DivVD",
4051 "AndV" ,"XorV" ,"OrV",
4052 "LShiftCntV","RShiftCntV",
4053 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4054 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4055 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4056 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4057 "LoadVector","StoreVector",
4058 // Next are not supported currently.
4059 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4060 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4061 };
4062 int cnt = sizeof(vector_list)/sizeof(char*);
4063 if (_rChild) {
4064 const char *opType = _rChild->_opType;
4065 for (int i=0; i<cnt; i++)
4066 if (strcmp(opType,vector_list[i]) == 0)
4067 return true;
4068 }
4069 return false;
4070 }
4071
4072
|