On Wed, 11 Jun 2025 08:51:50 GMT, Xiaohong Gong <xg...@openjdk.org> wrote:
>> erifan has updated the pull request incrementally with one additional commit >> since the last revision: >> >> Support negating unsigned comparison for BoolTest::mask >> >> Added a static method `negate_mask(mask btm)` into BoolTest class to >> negate both signed and unsigned comparison. > > src/hotspot/share/opto/vectornode.cpp line 2237: > >> 2235: !VectorNode::is_all_ones_vector(in2)) { >> 2236: return nullptr; >> 2237: } > > This part can be refined more clearly: > > // Swap and put all_ones_vector to right > if (!VectorNode::is_all_ones_vector(in1)) { > swap(in1, in2); > } > > // uncast mask > bool need_cast = false; > if (in1->Opcode() == Op_VectorMaskCast && > in1->outcnt() == 1) { > assert(in1->bottom_type()->eq(bottom_type()), ""); > need_cast = true; > in1 = in1->in(1); > } > > // Check mask cmp pattern > if (in1->Opcode() != Op_VectorMaskCmp || > in1->outcnt() > 1 || > !in1->as_VectorMaskCmp()->predicate_can_be_negated()) { > return nullptr; > } > > // Convert VectorMaskCmp + not > > > // Cast back > if (need_cast) { > res = new VectorMaskCastNode(phase->transform(res), vect_type()); > } Done ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24674#discussion_r2166351241