4124 return false;
4125 }
4126
4127
4128 Form::DataType MatchRule::is_ideal_load() const {
4129 Form::DataType ideal_load = Form::none;
4130
4131 if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4132 const char *opType = _rChild->_opType;
4133 ideal_load = is_load_from_memory(opType);
4134 }
4135
4136 return ideal_load;
4137 }
4138
4139 bool MatchRule::is_vector() const {
4140 static const char *vector_list[] = {
4141 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4142 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4143 "MulVS","MulVI","MulVL","MulVF","MulVD",
4144 "DivVF","DivVD",
4145 "AbsVF","AbsVD",
4146 "NegVF","NegVD",
4147 "SqrtVD",
4148 "AndV" ,"XorV" ,"OrV",
4149 "AddReductionVI", "AddReductionVL",
4150 "AddReductionVF", "AddReductionVD",
4151 "MulReductionVI", "MulReductionVL",
4152 "MulReductionVF", "MulReductionVD",
4153 "LShiftCntV","RShiftCntV",
4154 "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4155 "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4156 "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4157 "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4158 "LoadVector","StoreVector",
4159 // Next are not supported currently.
4160 "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4161 "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4162 };
4163 int cnt = sizeof(vector_list)/sizeof(char*);
|
4124 return false;
4125 }
4126
4127
4128 Form::DataType MatchRule::is_ideal_load() const {
4129 Form::DataType ideal_load = Form::none;
4130
4131 if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4132 const char *opType = _rChild->_opType;
4133 ideal_load = is_load_from_memory(opType);
4134 }
4135
4136 return ideal_load;
4137 }
4138
4139 bool MatchRule::is_vector() const {
4140 static const char *vector_list[] = {
4141 "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4142 "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4143 "MulVS","MulVI","MulVL","MulVF","MulVD",
4144 "CMoveVD",
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*);
|