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++)
|