< prev index next >

src/hotspot/share/opto/library_call.cpp

Print this page

        

*** 6923,6933 **** VecMaskUseStore, VecMaskUseAll, VecMaskNotUsed }; ! static bool arch_supports_vector(int op, int num_elem, BasicType type, VectorMaskUseType mask_use_type) { // Check that the operation is valid. if (op <= 0) { #ifndef PRODUCT if (DebugVectorApi) { tty->print_cr("Rejected intrinsification because no valid vector op could be extracted"); --- 6923,6933 ---- VecMaskUseStore, VecMaskUseAll, VecMaskNotUsed }; ! static bool arch_supports_vector(int op, int num_elem, BasicType type, VectorMaskUseType mask_use_type, int meta = 0) { // Check that the operation is valid. if (op <= 0) { #ifndef PRODUCT if (DebugVectorApi) { tty->print_cr("Rejected intrinsification because no valid vector op could be extracted");
*** 6935,6945 **** #endif return false; } // Check that architecture supports this op-size-type combination. ! if (!Matcher::match_rule_supported_vector(op, num_elem, type)) { #ifndef PRODUCT if (DebugVectorApi) { tty->print_cr("Rejected vector op (%s,%s,%d) because architecture does not support it", NodeClassNames[op], type2name(type), num_elem); } --- 6935,6945 ---- #endif return false; } // Check that architecture supports this op-size-type combination. ! if (!Matcher::match_rule_supported_vector(op, num_elem, type, meta)) { #ifndef PRODUCT if (DebugVectorApi) { tty->print_cr("Rejected vector op (%s,%s,%d) because architecture does not support it", NodeClassNames[op], type2name(type), num_elem); }
*** 7248,7258 **** int sopc = VectorNode::opcode(opc, elem_bt); // get_node_id(opr->get_con(), elem_bt); ciKlass* vbox_klass = vector_klass->const_oop()->as_instance()->java_lang_Class_klass(); const TypeInstPtr* vbox_type = TypeInstPtr::make_exact(TypePtr::NotNull, vbox_klass); // TODO When mask usage is supported, VecMaskNotUsed needs to be VecMaskUseLoad. ! if (!arch_supports_vector(sopc, num_elem, elem_bt, vbox_klass->is_vectormask() ? VecMaskUseAll : VecMaskNotUsed)) { return false; // not supported } Node* opd1 = NULL; Node* opd2 = NULL; Node* opd3 = NULL; switch (n) { --- 7248,7258 ---- int sopc = VectorNode::opcode(opc, elem_bt); // get_node_id(opr->get_con(), elem_bt); ciKlass* vbox_klass = vector_klass->const_oop()->as_instance()->java_lang_Class_klass(); const TypeInstPtr* vbox_type = TypeInstPtr::make_exact(TypePtr::NotNull, vbox_klass); // TODO When mask usage is supported, VecMaskNotUsed needs to be VecMaskUseLoad. ! if (!arch_supports_vector(sopc, num_elem, elem_bt, vbox_klass->is_vectormask() ? VecMaskUseAll : VecMaskNotUsed, n)) { return false; // not supported } Node* opd1 = NULL; Node* opd2 = NULL; Node* opd3 = NULL; switch (n) {
< prev index next >