< prev index next >

src/hotspot/share/adlc/formssel.cpp

Print this page
rev 50140 : Vector cast support


4172     "CMoveVD", "CMoveVF",
4173     "DivVF","DivVD",
4174     "MinV","MaxV",
4175     "AbsVF","AbsVD","AbsV",
4176     "NegVF","NegVD","NegVI",
4177     "SqrtVD","SqrtVF",
4178     "AndV" ,"XorV" ,"OrV", "NotV",
4179     "AddReductionVI", "AddReductionVL",
4180     "AddReductionVF", "AddReductionVD",
4181     "MulReductionVI", "MulReductionVL",
4182     "MulReductionVF", "MulReductionVD",
4183     "AndReductionV", "OrReductionV",
4184     "XorReductionV", "SubReductionV",
4185     "LShiftCntV","RShiftCntV",
4186     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4187     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4188     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4189     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4190     "LoadVector","StoreVector",
4191     "VectorLoadMask", "VectorStoreMask", "VectorBlend",
4192     "VectorMaskWrapper", "VectorMaskCmp",
4193     "ConvertVF2VD", "VectorReinterpret",

4194     "FmaVD", "FmaVF","PopCountVI",
4195     // Next are not supported currently.
4196     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4197     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4198   };
4199   int cnt = sizeof(vector_list)/sizeof(char*);
4200   if (_rChild) {
4201     const char  *opType = _rChild->_opType;
4202     for (int i=0; i<cnt; i++)
4203       if (strcmp(opType,vector_list[i]) == 0)
4204         return true;
4205   }
4206   return false;
4207 }
4208 
4209 
4210 bool MatchRule::skip_antidep_check() const {
4211   // Some loads operate on what is effectively immutable memory so we
4212   // should skip the anti dep computations.  For some of these nodes
4213   // the rewritable field keeps the anti dep logic from triggering but




4172     "CMoveVD", "CMoveVF",
4173     "DivVF","DivVD",
4174     "MinV","MaxV",
4175     "AbsVF","AbsVD","AbsV",
4176     "NegVF","NegVD","NegVI",
4177     "SqrtVD","SqrtVF",
4178     "AndV" ,"XorV" ,"OrV", "NotV",
4179     "AddReductionVI", "AddReductionVL",
4180     "AddReductionVF", "AddReductionVD",
4181     "MulReductionVI", "MulReductionVL",
4182     "MulReductionVF", "MulReductionVD",
4183     "AndReductionV", "OrReductionV",
4184     "XorReductionV", "SubReductionV",
4185     "LShiftCntV","RShiftCntV",
4186     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4187     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4188     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4189     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4190     "LoadVector","StoreVector",
4191     "VectorLoadMask", "VectorStoreMask", "VectorBlend",
4192     "VectorCastB2X", "VectorCastS2X", "VectorCastI2X",
4193     "VectorCastL2X", "VectorCastF2X", "VectorCastD2X",
4194     "VectorMaskWrapper", "VectorMaskCmp", "VectorReinterpret",
4195     "FmaVD", "FmaVF","PopCountVI",
4196     // Next are not supported currently.
4197     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4198     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4199   };
4200   int cnt = sizeof(vector_list)/sizeof(char*);
4201   if (_rChild) {
4202     const char  *opType = _rChild->_opType;
4203     for (int i=0; i<cnt; i++)
4204       if (strcmp(opType,vector_list[i]) == 0)
4205         return true;
4206   }
4207   return false;
4208 }
4209 
4210 
4211 bool MatchRule::skip_antidep_check() const {
4212   // Some loads operate on what is effectively immutable memory so we
4213   // should skip the anti dep computations.  For some of these nodes
4214   // the rewritable field keeps the anti dep logic from triggering but


< prev index next >