< prev index next >

src/share/vm/opto/vectornode.cpp

Print this page




 171     return Op_LoadVector;
 172 
 173   case Op_StoreB:
 174   case Op_StoreC:
 175   case Op_StoreI:
 176   case Op_StoreL:
 177   case Op_StoreF:
 178   case Op_StoreD:
 179     return Op_StoreVector;
 180   }
 181   return 0; // Unimplemented
 182 }
 183 
 184 // Also used to check if the code generator
 185 // supports the vector operation.
 186 bool VectorNode::implemented(int opc, uint vlen, BasicType bt) {
 187   if (is_java_primitive(bt) &&
 188       (vlen > 1) && is_power_of_2(vlen) &&
 189       Matcher::vector_size_supported(bt, vlen)) {
 190     int vopc = VectorNode::opcode(opc, bt);
 191     return vopc > 0 && Matcher::match_rule_supported(vopc) && (vopc != Op_CMoveD || vlen == 4);
 192   }
 193   return false;
 194 }
 195 
 196 bool VectorNode::is_shift(Node* n) {
 197   switch (n->Opcode()) {
 198   case Op_LShiftI:
 199   case Op_LShiftL:
 200   case Op_RShiftI:
 201   case Op_RShiftL:
 202   case Op_URShiftI:
 203   case Op_URShiftL:
 204     return true;
 205   }
 206   return false;
 207 }
 208 
 209 // Check if input is loop invariant vector.
 210 bool VectorNode::is_invariant_vector(Node* n) {
 211   // Only Replicate vector nodes are loop invariant for now.




 171     return Op_LoadVector;
 172 
 173   case Op_StoreB:
 174   case Op_StoreC:
 175   case Op_StoreI:
 176   case Op_StoreL:
 177   case Op_StoreF:
 178   case Op_StoreD:
 179     return Op_StoreVector;
 180   }
 181   return 0; // Unimplemented
 182 }
 183 
 184 // Also used to check if the code generator
 185 // supports the vector operation.
 186 bool VectorNode::implemented(int opc, uint vlen, BasicType bt) {
 187   if (is_java_primitive(bt) &&
 188       (vlen > 1) && is_power_of_2(vlen) &&
 189       Matcher::vector_size_supported(bt, vlen)) {
 190     int vopc = VectorNode::opcode(opc, bt);
 191     return vopc > 0 && Matcher::match_rule_supported_vector(vopc, vlen);
 192   }
 193   return false;
 194 }
 195 
 196 bool VectorNode::is_shift(Node* n) {
 197   switch (n->Opcode()) {
 198   case Op_LShiftI:
 199   case Op_LShiftL:
 200   case Op_RShiftI:
 201   case Op_RShiftL:
 202   case Op_URShiftI:
 203   case Op_URShiftL:
 204     return true;
 205   }
 206   return false;
 207 }
 208 
 209 // Check if input is loop invariant vector.
 210 bool VectorNode::is_invariant_vector(Node* n) {
 211   // Only Replicate vector nodes are loop invariant for now.


< prev index next >