< prev index next >

src/hotspot/share/adlc/formssel.cpp

Print this page




4033         strcmp(opType,"RoundDoubleMode")==0 ||
4034         strcmp(opType,"RoundFloat")==0 ||
4035         strcmp(opType,"ReverseBytesI")==0 ||
4036         strcmp(opType,"ReverseBytesL")==0 ||
4037         strcmp(opType,"ReverseBytesUS")==0 ||
4038         strcmp(opType,"ReverseBytesS")==0 ||
4039         strcmp(opType,"ReplicateB")==0 ||
4040         strcmp(opType,"ReplicateS")==0 ||
4041         strcmp(opType,"ReplicateI")==0 ||
4042         strcmp(opType,"ReplicateL")==0 ||
4043         strcmp(opType,"ReplicateF")==0 ||
4044         strcmp(opType,"ReplicateD")==0 ||
4045         strcmp(opType,"AddReductionVI")==0 ||
4046         strcmp(opType,"AddReductionVL")==0 ||
4047         strcmp(opType,"AddReductionVF")==0 ||
4048         strcmp(opType,"AddReductionVD")==0 ||
4049         strcmp(opType,"MulReductionVI")==0 ||
4050         strcmp(opType,"MulReductionVL")==0 ||
4051         strcmp(opType,"MulReductionVF")==0 ||
4052         strcmp(opType,"MulReductionVD")==0 ||
4053         strcmp(opType,"MinReductionV")== 0 ||
4054         strcmp(opType,"MaxReductionV")== 0 ||
4055         strcmp(opType,"AndReductionV")==0 ||
4056         strcmp(opType,"OrReductionV")==0 ||
4057         strcmp(opType,"XorReductionV")==0 ||
4058         0 /* 0 to line up columns nicely */ )
4059       return 1;
4060   }
4061   return 0;
4062 }
4063 
4064 bool MatchRule::is_ideal_if() const {
4065   if( !_opType ) return false;
4066   return
4067     !strcmp(_opType,"If"            ) ||
4068     !strcmp(_opType,"CountedLoopEnd");
4069 }
4070 
4071 bool MatchRule::is_ideal_fastlock() const {
4072   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4073     return (strcmp(_rChild->_opType,"FastLock") == 0);
4074   }


4135 
4136   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4137     const char *opType = _rChild->_opType;
4138     ideal_load = is_load_from_memory(opType);
4139   }
4140 
4141   return ideal_load;
4142 }
4143 
4144 bool MatchRule::is_vector() const {
4145   static const char *vector_list[] = {
4146     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4147     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4148     "MulVB","MulVS","MulVI","MulVL","MulVF","MulVD",
4149     "CMoveVD", "CMoveVF",
4150     "DivVF","DivVD",
4151     "MinV","MaxV",
4152     "AbsVB","AbsVS","AbsVI","AbsVL","AbsVF","AbsVD",
4153     "NegVF","NegVD","NegVI",
4154     "SqrtVD","SqrtVF",
4155     "AndV" ,"XorV" ,"OrV", "NotV",
4156     "MaxV", "MinV",
4157     "AddReductionVI", "AddReductionVL",
4158     "AddReductionVF", "AddReductionVD",
4159     "MulReductionVI", "MulReductionVL",
4160     "MulReductionVF", "MulReductionVD",
4161     "MaxReductionV", "MinReductionV",
4162     "AndReductionV", "OrReductionV", "XorReductionV",
4163     "MulAddVS2VI", "MacroLogicV",
4164     "LShiftCntV","RShiftCntV",
4165     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4166     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4167     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",
4168     "VLShiftV","VRShiftV","VURShiftV",
4169     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4170     "RoundDoubleModeV","LoadVector","StoreVector","LoadVectorGather", "StoreVectorScatter",
4171     "VectorTest", "VectorLoadMask", "VectorStoreMask", "VectorBlend", "VectorInsert",
4172     "VectorRearrange","VectorLoadShuffle", "VectorLoadConst",
4173     "VectorCastB2X", "VectorCastS2X", "VectorCastI2X",
4174     "VectorCastL2X", "VectorCastF2X", "VectorCastD2X",
4175     "VectorMaskWrapper", "VectorMaskCmp", "VectorReinterpret",
4176     "FmaVD", "FmaVF","PopCountVI",
4177     // Next are not supported currently.
4178     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4179     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4180   };
4181   int cnt = sizeof(vector_list)/sizeof(char*);
4182   if (_rChild) {
4183     const char  *opType = _rChild->_opType;
4184     for (int i=0; i<cnt; i++)
4185       if (strcmp(opType,vector_list[i]) == 0)
4186         return true;
4187   }
4188   return false;




4033         strcmp(opType,"RoundDoubleMode")==0 ||
4034         strcmp(opType,"RoundFloat")==0 ||
4035         strcmp(opType,"ReverseBytesI")==0 ||
4036         strcmp(opType,"ReverseBytesL")==0 ||
4037         strcmp(opType,"ReverseBytesUS")==0 ||
4038         strcmp(opType,"ReverseBytesS")==0 ||
4039         strcmp(opType,"ReplicateB")==0 ||
4040         strcmp(opType,"ReplicateS")==0 ||
4041         strcmp(opType,"ReplicateI")==0 ||
4042         strcmp(opType,"ReplicateL")==0 ||
4043         strcmp(opType,"ReplicateF")==0 ||
4044         strcmp(opType,"ReplicateD")==0 ||
4045         strcmp(opType,"AddReductionVI")==0 ||
4046         strcmp(opType,"AddReductionVL")==0 ||
4047         strcmp(opType,"AddReductionVF")==0 ||
4048         strcmp(opType,"AddReductionVD")==0 ||
4049         strcmp(opType,"MulReductionVI")==0 ||
4050         strcmp(opType,"MulReductionVL")==0 ||
4051         strcmp(opType,"MulReductionVF")==0 ||
4052         strcmp(opType,"MulReductionVD")==0 ||
4053         strcmp(opType,"MinReductionV")==0 ||
4054         strcmp(opType,"MaxReductionV")==0 ||
4055         strcmp(opType,"AndReductionV")==0 ||
4056         strcmp(opType,"OrReductionV")==0 ||
4057         strcmp(opType,"XorReductionV")==0 ||
4058         0 /* 0 to line up columns nicely */ )
4059       return 1;
4060   }
4061   return 0;
4062 }
4063 
4064 bool MatchRule::is_ideal_if() const {
4065   if( !_opType ) return false;
4066   return
4067     !strcmp(_opType,"If"            ) ||
4068     !strcmp(_opType,"CountedLoopEnd");
4069 }
4070 
4071 bool MatchRule::is_ideal_fastlock() const {
4072   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4073     return (strcmp(_rChild->_opType,"FastLock") == 0);
4074   }


4135 
4136   if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) {
4137     const char *opType = _rChild->_opType;
4138     ideal_load = is_load_from_memory(opType);
4139   }
4140 
4141   return ideal_load;
4142 }
4143 
4144 bool MatchRule::is_vector() const {
4145   static const char *vector_list[] = {
4146     "AddVB","AddVS","AddVI","AddVL","AddVF","AddVD",
4147     "SubVB","SubVS","SubVI","SubVL","SubVF","SubVD",
4148     "MulVB","MulVS","MulVI","MulVL","MulVF","MulVD",
4149     "CMoveVD", "CMoveVF",
4150     "DivVF","DivVD",
4151     "MinV","MaxV",
4152     "AbsVB","AbsVS","AbsVI","AbsVL","AbsVF","AbsVD",
4153     "NegVF","NegVD","NegVI",
4154     "SqrtVD","SqrtVF",
4155     "AndV" ,"XorV" ,"OrV",
4156     "MaxV", "MinV",
4157     "AddReductionVI", "AddReductionVL",
4158     "AddReductionVF", "AddReductionVD",
4159     "MulReductionVI", "MulReductionVL",
4160     "MulReductionVF", "MulReductionVD",
4161     "MaxReductionV", "MinReductionV",
4162     "AndReductionV", "OrReductionV", "XorReductionV",
4163     "MulAddVS2VI", "MacroLogicV",
4164     "LShiftCntV","RShiftCntV",
4165     "LShiftVB","LShiftVS","LShiftVI","LShiftVL",
4166     "RShiftVB","RShiftVS","RShiftVI","RShiftVL",
4167     "URShiftVB","URShiftVS","URShiftVI","URShiftVL",

4168     "ReplicateB","ReplicateS","ReplicateI","ReplicateL","ReplicateF","ReplicateD",
4169     "RoundDoubleModeV","LoadVector","StoreVector","LoadVectorGather", "StoreVectorScatter",
4170     "VectorTest", "VectorLoadMask", "VectorStoreMask", "VectorBlend", "VectorInsert",
4171     "VectorRearrange","VectorLoadShuffle", "VectorLoadConst",
4172     "VectorCastB2X", "VectorCastS2X", "VectorCastI2X",
4173     "VectorCastL2X", "VectorCastF2X", "VectorCastD2X",
4174     "VectorMaskWrapper", "VectorMaskCmp", "VectorReinterpret",
4175     "FmaVD", "FmaVF","PopCountVI",
4176     // Next are not supported currently.
4177     "PackB","PackS","PackI","PackL","PackF","PackD","Pack2L","Pack2D",
4178     "ExtractB","ExtractUB","ExtractC","ExtractS","ExtractI","ExtractL","ExtractF","ExtractD"
4179   };
4180   int cnt = sizeof(vector_list)/sizeof(char*);
4181   if (_rChild) {
4182     const char  *opType = _rChild->_opType;
4183     for (int i=0; i<cnt; i++)
4184       if (strcmp(opType,vector_list[i]) == 0)
4185         return true;
4186   }
4187   return false;


< prev index next >