< prev index next >

src/hotspot/share/opto/matcher.hpp

Print this page

312   //   _new_SP + max outgoing arguments of all calls
313   OptoReg::Name _out_arg_limit;
314 
315   OptoRegPair *_parm_regs;        // Array of machine registers per argument
316   RegMask *_calling_convention_mask; // Array of RegMasks per argument
317 
318   // Does matcher have a match rule for this ideal node?
319   static const bool has_match_rule(int opcode);
320   static const bool _hasMatchRule[_last_opcode];
321 
322   // Does matcher have a match rule for this ideal node and is the
323   // predicate (if there is one) true?
324   // NOTE: If this function is used more commonly in the future, ADLC
325   // should generate this one.
326   static const bool match_rule_supported(int opcode);
327 
328   // identify extra cases that we might want to provide match rules for
329   // e.g. Op_ vector nodes and other intrinsics while guarding with vlen
330   static const bool match_rule_supported_vector(int opcode, int vlen, BasicType bt);
331 


332   static const RegMask* predicate_reg_mask(void);
333   static const TypeVect* predicate_reg_type(const Type* elemTy, int length);
334 
335   // Vector width in bytes
336   static const int vector_width_in_bytes(BasicType bt);
337 
338   // Limits on vector size (number of elements).
339   static const int max_vector_size(const BasicType bt);
340   static const int min_vector_size(const BasicType bt);
341   static const bool vector_size_supported(const BasicType bt, int size) {
342     return (Matcher::max_vector_size(bt) >= size &&
343             Matcher::min_vector_size(bt) <= size);
344   }
345 
346   // Actual max scalable vector register length.
347   static const int scalable_vector_reg_size(const BasicType bt);


348 
349   // Vector ideal reg
350   static const uint vector_ideal_reg(int len);
351 
352   // Vector length
353   static uint vector_length(const Node* n);
354   static uint vector_length(const MachNode* use, const MachOper* opnd);
355 
356   // Vector length in bytes
357   static uint vector_length_in_bytes(const Node* n);
358   static uint vector_length_in_bytes(const MachNode* use, const MachOper* opnd);
359 
360   // Vector element basic type
361   static BasicType vector_element_basic_type(const Node* n);
362   static BasicType vector_element_basic_type(const MachNode* use, const MachOper* opnd);
363 
364   // These calls are all generated by the ADLC
365 
366   // Java-Java calling convention
367   // (what you use when Java calls Java)

312   //   _new_SP + max outgoing arguments of all calls
313   OptoReg::Name _out_arg_limit;
314 
315   OptoRegPair *_parm_regs;        // Array of machine registers per argument
316   RegMask *_calling_convention_mask; // Array of RegMasks per argument
317 
318   // Does matcher have a match rule for this ideal node?
319   static const bool has_match_rule(int opcode);
320   static const bool _hasMatchRule[_last_opcode];
321 
322   // Does matcher have a match rule for this ideal node and is the
323   // predicate (if there is one) true?
324   // NOTE: If this function is used more commonly in the future, ADLC
325   // should generate this one.
326   static const bool match_rule_supported(int opcode);
327 
328   // identify extra cases that we might want to provide match rules for
329   // e.g. Op_ vector nodes and other intrinsics while guarding with vlen
330   static const bool match_rule_supported_vector(int opcode, int vlen, BasicType bt);
331 
332   static const bool match_rule_supported_vector_masked(int opcode, int vlen, BasicType bt);
333 
334   static const RegMask* predicate_reg_mask(void);
335   static const TypeVect* predicate_reg_type(const Type* elemTy, int length);
336 
337   // Vector width in bytes
338   static const int vector_width_in_bytes(BasicType bt);
339 
340   // Limits on vector size (number of elements).
341   static const int max_vector_size(const BasicType bt);
342   static const int min_vector_size(const BasicType bt);
343   static const bool vector_size_supported(const BasicType bt, int size) {
344     return (Matcher::max_vector_size(bt) >= size &&
345             Matcher::min_vector_size(bt) <= size);
346   }
347 
348   // Actual max scalable vector register length.
349   static const int scalable_vector_reg_size(const BasicType bt);
350   // Actual max scalable predicate register length.
351   static const int scalable_predicate_reg_slots();
352 
353   // Vector ideal reg
354   static const uint vector_ideal_reg(int len);
355 
356   // Vector length
357   static uint vector_length(const Node* n);
358   static uint vector_length(const MachNode* use, const MachOper* opnd);
359 
360   // Vector length in bytes
361   static uint vector_length_in_bytes(const Node* n);
362   static uint vector_length_in_bytes(const MachNode* use, const MachOper* opnd);
363 
364   // Vector element basic type
365   static BasicType vector_element_basic_type(const Node* n);
366   static BasicType vector_element_basic_type(const MachNode* use, const MachOper* opnd);
367 
368   // These calls are all generated by the ADLC
369 
370   // Java-Java calling convention
371   // (what you use when Java calls Java)
< prev index next >