< prev index next >

src/hotspot/share/adlc/formssel.cpp

Print this page

4199   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4200     const char *opType = _rChild->_opType;
4201     ideal_load = is_load_from_memory(opType);
4202   }
4203 
4204   return ideal_load;
4205 }
4206 
4207 bool MatchRule::is_vector() const {
4208   static const char *vector_list[] = {
4209     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4210     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4211     "MulVB","MulVS","MulVI","MulVL","MulVF","MulVD",
4212     "CMoveVD", "CMoveVF",
4213     "DivVF","DivVD",
4214     "AbsVB","AbsVS","AbsVI","AbsVL","AbsVF","AbsVD",
4215     "NegVF","NegVD","NegVI","NegVL",
4216     "SqrtVD","SqrtVF",
4217     "AndV" ,"XorV" ,"OrV",
4218     "MaxV", "MinV",

4219     "AddReductionVI", "AddReductionVL",
4220     "AddReductionVF", "AddReductionVD",
4221     "MulReductionVI", "MulReductionVL",
4222     "MulReductionVF", "MulReductionVD",
4223     "MaxReductionV", "MinReductionV",
4224     "AndReductionV", "OrReductionV", "XorReductionV",
4225     "MulAddVS2VI", "MacroLogicV",
4226     "LShiftCntV","RShiftCntV",
4227     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4228     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4229     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4230     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4231     "RoundDoubleModeV","RotateLeftV" , "RotateRightV", "LoadVector","StoreVector",
4232     "LoadVectorGather", "StoreVectorScatter", "LoadVectorGatherMasked", "StoreVectorScatterMasked",
4233     "VectorTest", "VectorLoadMask", "VectorStoreMask", "VectorBlend", "VectorInsert",
4234     "VectorRearrange","VectorLoadShuffle", "VectorLoadConst",
4235     "VectorCastB2X", "VectorCastS2X", "VectorCastI2X",
4236     "VectorCastL2X", "VectorCastF2X", "VectorCastD2X",
4237     "VectorUCastB2X", "VectorUCastS2X", "VectorUCastI2X",
4238     "VectorMaskWrapper","VectorMaskCmp","VectorReinterpret","LoadVectorMasked","StoreVectorMasked",
4239     "FmaVD","FmaVF","PopCountVI", "PopCountVL", "VectorLongToMask",

4240     // Next are vector mask ops.
4241     "MaskAll", "AndVMask", "OrVMask", "XorVMask", "VectorMaskCast",
4242     "RoundVF", "RoundVD",
4243     // Next are not supported currently.
4244     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4245     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4246   };
4247   int cnt = sizeof(vector_list)/sizeof(char*);
4248   if (_rChild) {
4249     const char  *opType = _rChild->_opType;
4250     for (int i=0; i<cnt; i++)
4251       if (strcmp(opType,vector_list[i]) == 0)
4252         return true;
4253   }
4254   return false;
4255 }
4256 
4257 
4258 bool MatchRule::skip_antidep_check() const {
4259   // Some loads operate on what is effectively immutable memory so we

4199   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4200     const char *opType = _rChild->_opType;
4201     ideal_load = is_load_from_memory(opType);
4202   }
4203 
4204   return ideal_load;
4205 }
4206 
4207 bool MatchRule::is_vector() const {
4208   static const char *vector_list[] = {
4209     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4210     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4211     "MulVB","MulVS","MulVI","MulVL","MulVF","MulVD",
4212     "CMoveVD", "CMoveVF",
4213     "DivVF","DivVD",
4214     "AbsVB","AbsVS","AbsVI","AbsVL","AbsVF","AbsVD",
4215     "NegVF","NegVD","NegVI","NegVL",
4216     "SqrtVD","SqrtVF",
4217     "AndV" ,"XorV" ,"OrV",
4218     "MaxV", "MinV",
4219     "CompressV", "ExpandV", "CompressM",
4220     "AddReductionVI", "AddReductionVL",
4221     "AddReductionVF", "AddReductionVD",
4222     "MulReductionVI", "MulReductionVL",
4223     "MulReductionVF", "MulReductionVD",
4224     "MaxReductionV", "MinReductionV",
4225     "AndReductionV", "OrReductionV", "XorReductionV",
4226     "MulAddVS2VI", "MacroLogicV",
4227     "LShiftCntV","RShiftCntV",
4228     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4229     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4230     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4231     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD", "ReverseV", "ReverseBytesV",
4232     "RoundDoubleModeV","RotateLeftV" , "RotateRightV", "LoadVector","StoreVector",
4233     "LoadVectorGather", "StoreVectorScatter", "LoadVectorGatherMasked", "StoreVectorScatterMasked",
4234     "VectorTest", "VectorLoadMask", "VectorStoreMask", "VectorBlend", "VectorInsert",
4235     "VectorRearrange","VectorLoadShuffle", "VectorLoadConst",
4236     "VectorCastB2X", "VectorCastS2X", "VectorCastI2X",
4237     "VectorCastL2X", "VectorCastF2X", "VectorCastD2X",
4238     "VectorUCastB2X", "VectorUCastS2X", "VectorUCastI2X",
4239     "VectorMaskWrapper","VectorMaskCmp","VectorReinterpret","LoadVectorMasked","StoreVectorMasked",
4240     "FmaVD","FmaVF","PopCountVI", "PopCountVL", "VectorLongToMask",
4241     "CountLeadingZerosV", "CountTrailingZerosV",
4242     // Next are vector mask ops.
4243     "MaskAll", "AndVMask", "OrVMask", "XorVMask", "VectorMaskCast",
4244     "RoundVF", "RoundVD",
4245     // Next are not supported currently.
4246     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4247     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4248   };
4249   int cnt = sizeof(vector_list)/sizeof(char*);
4250   if (_rChild) {
4251     const char  *opType = _rChild->_opType;
4252     for (int i=0; i<cnt; i++)
4253       if (strcmp(opType,vector_list[i]) == 0)
4254         return true;
4255   }
4256   return false;
4257 }
4258 
4259 
4260 bool MatchRule::skip_antidep_check() const {
4261   // Some loads operate on what is effectively immutable memory so we
< prev index next >