8302814: Delete unused CountLoopEnd instruct with CmpX

Reviewed-by: kvn, fjiang
This commit is contained in:
SUN Guoyun 2023-03-29 17:18:59 +00:00 committed by Vladimir Kozlov
parent 34f4d7f4ad
commit be764a711c
4 changed files with 0 additions and 546 deletions

View File

@ -16573,25 +16573,7 @@ instruct branchLoopEnd(cmpOp cmp, rFlagsReg cr, label lbl)
ins_pipe(pipe_branch);
%}
// counted loop end branch near Unsigned
instruct branchLoopEndU(cmpOpU cmp, rFlagsRegU cr, label lbl)
%{
match(CountedLoopEnd cmp cr);
effect(USE lbl);
ins_cost(BRANCH_COST);
// short variant.
// ins_short_branch(1);
format %{ "b$cmp $lbl \t// counted loop end unsigned" %}
ins_encode(aarch64_enc_br_conU(cmp, lbl));
ins_pipe(pipe_branch);
%}
// counted loop end branch far
// counted loop end branch far unsigned
// TODO: fixme
// ============================================================================

View File

@ -8905,26 +8905,6 @@ instruct cmpU_branch(cmpOpU cmp, iRegI op1, iRegI op2, label lbl)
ins_short_branch(1);
%}
instruct cmpU_loop(cmpOpU cmp, iRegI op1, iRegI op2, label lbl)
%{
// Same match rule as `far_cmpU_loop'.
match(CountedLoopEnd cmp (CmpU op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, $op2, $lbl\t#@cmpU_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmp_branch);
ins_short_branch(1);
%}
// Compare signed long and branch near instructions
instruct cmpL_branch(cmpOp cmp, iRegL op1, iRegL op2, label lbl)
%{
@ -8984,25 +8964,6 @@ instruct cmpUL_branch(cmpOpU cmp, iRegL op1, iRegL op2, label lbl)
ins_short_branch(1);
%}
instruct cmpUL_loop(cmpOpU cmp, iRegL op1, iRegL op2, label lbl)
%{
// Same match rule as `far_cmpUL_loop'.
match(CountedLoopEnd cmp (CmpUL op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, $op2, $lbl\t#@cmpUL_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmp_branch);
ins_short_branch(1);
%}
// Compare pointer and branch near instructions
instruct cmpP_branch(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
%{
@ -9024,26 +8985,6 @@ instruct cmpP_branch(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
ins_short_branch(1);
%}
instruct cmpP_loop(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
%{
// Same match rule as `far_cmpP_loop'.
match(CountedLoopEnd cmp (CmpP op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, $op2, $lbl\t#@cmpP_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmp_branch);
ins_short_branch(1);
%}
// Compare narrow pointer and branch near instructions
instruct cmpN_branch(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
%{
@ -9065,26 +9006,6 @@ instruct cmpN_branch(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
ins_short_branch(1);
%}
instruct cmpN_loop(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
%{
// Same match rule as `far_cmpN_loop'.
match(CountedLoopEnd cmp (CmpN op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, $op2, $lbl\t#@cmpN_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmp_branch);
ins_short_branch(1);
%}
// Compare float and branch near instructions
instruct cmpF_branch(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
%{
@ -9104,23 +9025,6 @@ instruct cmpF_branch(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
ins_short_branch(1);
%}
instruct cmpF_loop(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
%{
// Same match rule as `far_cmpF_loop'.
match(CountedLoopEnd cmp (CmpF op1 op2));
effect(USE lbl);
ins_cost(XFER_COST + BRANCH_COST);
format %{ "float_b$cmp $op1, $op2, $lbl\t#@cmpF_loop"%}
ins_encode %{
__ float_cmp_branch($cmp$$cmpcode, as_FloatRegister($op1$$reg), as_FloatRegister($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_class_compare);
ins_short_branch(1);
%}
// Compare double and branch near instructions
instruct cmpD_branch(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
%{
@ -9140,24 +9044,6 @@ instruct cmpD_branch(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
ins_short_branch(1);
%}
instruct cmpD_loop(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
%{
// Same match rule as `far_cmpD_loop'.
match(CountedLoopEnd cmp (CmpD op1 op2));
effect(USE lbl);
ins_cost(XFER_COST + BRANCH_COST);
format %{ "double_b$cmp $op1, $op2, $lbl\t#@cmpD_loop"%}
ins_encode %{
__ float_cmp_branch($cmp$$cmpcode | C2_MacroAssembler::double_branch_mask, as_FloatRegister($op1$$reg),
as_FloatRegister($op2$$reg), *($lbl$$label));
%}
ins_pipe(pipe_class_compare);
ins_short_branch(1);
%}
// Compare signed int with zero and branch near instructions
instruct cmpI_reg_imm0_branch(cmpOp cmp, iRegI op1, immI0 zero, label lbl)
%{
@ -9216,26 +9102,6 @@ instruct cmpUEqNeLeGt_reg_imm0_branch(cmpOpUEqNeLeGt cmp, iRegI op1, immI0 zero,
ins_short_branch(1);
%}
instruct cmpUEqNeLeGt_reg_imm0_loop(cmpOpUEqNeLeGt cmp, iRegI op1, immI0 zero, label lbl)
%{
// Same match rule as `far_cmpUEqNeLeGt_reg_imm0_loop'.
match(CountedLoopEnd cmp (CmpU op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, zr, $lbl\t#@cmpUEqNeLeGt_reg_imm0_loop" %}
ins_encode %{
__ enc_cmpUEqNeLeGt_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmpz_branch);
ins_short_branch(1);
%}
// Compare signed long with zero and branch near instructions
instruct cmpL_reg_imm0_branch(cmpOp cmp, iRegL op1, immL0 zero, label lbl)
%{
@ -9295,25 +9161,6 @@ instruct cmpULEqNeLeGt_reg_imm0_branch(cmpOpUEqNeLeGt cmp, iRegL op1, immL0 zero
ins_short_branch(1);
%}
instruct cmpULEqNeLeGt_reg_imm0_loop(cmpOpUEqNeLeGt cmp, iRegL op1, immL0 zero, label lbl)
%{
// Same match rule as `far_cmpULEqNeLeGt_reg_imm0_loop'.
match(CountedLoopEnd cmp (CmpUL op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, zr, $lbl\t#@cmpULEqNeLeGt_reg_imm0_loop" %}
ins_encode %{
__ enc_cmpUEqNeLeGt_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmpz_branch);
ins_short_branch(1);
%}
// Compare pointer with zero and branch near instructions
instruct cmpP_imm0_branch(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %{
// Same match rule as `far_cmpP_reg_imm0_branch'.
@ -9331,22 +9178,6 @@ instruct cmpP_imm0_branch(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %{
ins_short_branch(1);
%}
instruct cmpP_imm0_loop(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %{
// Same match rule as `far_cmpP_reg_imm0_loop'.
match(CountedLoopEnd cmp (CmpP op1 zero));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, zr, $lbl\t#@cmpP_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmpz_branch);
ins_short_branch(1);
%}
// Compare narrow pointer with zero and branch near instructions
instruct cmpN_imm0_branch(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %{
// Same match rule as `far_cmpN_reg_imm0_branch'.
@ -9365,23 +9196,6 @@ instruct cmpN_imm0_branch(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %{
ins_short_branch(1);
%}
instruct cmpN_imm0_loop(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %{
// Same match rule as `far_cmpN_reg_imm0_loop'.
match(CountedLoopEnd cmp (CmpN op1 zero));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, zr, $lbl\t#@cmpN_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmpz_branch);
ins_short_branch(1);
%}
// Compare narrow pointer with pointer zero and branch near instructions
instruct cmpP_narrowOop_imm0_branch(cmpOpEqNe cmp, iRegN op1, immP0 zero, label lbl) %{
// Same match rule as `far_cmpP_narrowOop_imm0_branch'.
@ -9399,22 +9213,6 @@ instruct cmpP_narrowOop_imm0_branch(cmpOpEqNe cmp, iRegN op1, immP0 zero, label
ins_short_branch(1);
%}
instruct cmpP_narrowOop_imm0_loop(cmpOpEqNe cmp, iRegN op1, immP0 zero, label lbl) %{
// Same match rule as `far_cmpP_narrowOop_imm0_loop'.
match(CountedLoopEnd cmp (CmpP (DecodeN op1) zero));
effect(USE lbl);
ins_cost(BRANCH_COST);
format %{ "b$cmp $op1, zr, $lbl\t#@cmpP_narrowOop_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label));
%}
ins_pipe(pipe_cmpz_branch);
ins_short_branch(1);
%}
// Patterns for far (20KiB) variants
instruct far_cmpFlag_branch(cmpOp cmp, rFlagsReg cr, label lbl) %{
@ -9478,21 +9276,6 @@ instruct far_cmpU_branch(cmpOpU cmp, iRegI op1, iRegI op2, label lbl) %{
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpU_loop(cmpOpU cmp, iRegI op1, iRegI op2, label lbl) %{
match(CountedLoopEnd cmp (CmpU op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, $op2, $lbl\t#@far_cmpU_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpL_branch(cmpOp cmp, iRegL op1, iRegL op2, label lbl) %{
match(If cmp (CmpL op1 op2));
effect(USE lbl);
@ -9536,21 +9319,6 @@ instruct far_cmpUL_branch(cmpOpU cmp, iRegL op1, iRegL op2, label lbl) %{
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpUL_loop(cmpOpU cmp, iRegL op1, iRegL op2, label lbl) %{
match(CountedLoopEnd cmp (CmpUL op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, $op2, $lbl\t#@far_cmpUL_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpP_branch(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
%{
match(If cmp (CmpP op1 op2));
@ -9569,24 +9337,6 @@ instruct far_cmpP_branch(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpP_loop(cmpOpU cmp, iRegP op1, iRegP op2, label lbl)
%{
match(CountedLoopEnd cmp (CmpP op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, $op2, $lbl\t#@far_cmpP_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpN_branch(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
%{
match(If cmp (CmpN op1 op2));
@ -9605,24 +9355,6 @@ instruct far_cmpN_branch(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
ins_pipe(pipe_cmp_branch);
%}
instruct far_cmpN_loop(cmpOpU cmp, iRegN op1, iRegN op2, label lbl)
%{
match(CountedLoopEnd cmp (CmpN op1 op2));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, $op2, $lbl\t#@far_cmpN_loop" %}
ins_encode %{
__ cmp_branch($cmp$$cmpcode | C2_MacroAssembler::unsigned_branch_mask, as_Register($op1$$reg),
as_Register($op2$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmp_branch);
%}
// Float compare and branch instructions
instruct far_cmpF_branch(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
%{
@ -9641,22 +9373,6 @@ instruct far_cmpF_branch(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
ins_pipe(pipe_class_compare);
%}
instruct far_cmpF_loop(cmpOp cmp, fRegF op1, fRegF op2, label lbl)
%{
match(CountedLoopEnd cmp (CmpF op1 op2));
effect(USE lbl);
ins_cost(XFER_COST + BRANCH_COST * 2);
format %{ "far_float_b$cmp $op1, $op2, $lbl\t#@far_cmpF_loop"%}
ins_encode %{
__ float_cmp_branch($cmp$$cmpcode, as_FloatRegister($op1$$reg), as_FloatRegister($op2$$reg),
*($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_class_compare);
%}
// Double compare and branch instructions
instruct far_cmpD_branch(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
%{
@ -9674,22 +9390,6 @@ instruct far_cmpD_branch(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
ins_pipe(pipe_class_compare);
%}
instruct far_cmpD_loop(cmpOp cmp, fRegD op1, fRegD op2, label lbl)
%{
match(CountedLoopEnd cmp (CmpD op1 op2));
effect(USE lbl);
ins_cost(XFER_COST + BRANCH_COST * 2);
format %{ "far_double_b$cmp $op1, $op2, $lbl\t#@far_cmpD_loop"%}
ins_encode %{
__ float_cmp_branch($cmp$$cmpcode | C2_MacroAssembler::double_branch_mask, as_FloatRegister($op1$$reg),
as_FloatRegister($op2$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_class_compare);
%}
instruct far_cmpI_reg_imm0_branch(cmpOp cmp, iRegI op1, immI0 zero, label lbl)
%{
match(If cmp (CmpI op1 zero));
@ -9741,24 +9441,6 @@ instruct far_cmpUEqNeLeGt_imm0_branch(cmpOpUEqNeLeGt cmp, iRegI op1, immI0 zero,
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpUEqNeLeGt_reg_imm0_loop(cmpOpUEqNeLeGt cmp, iRegI op1, immI0 zero, label lbl)
%{
match(CountedLoopEnd cmp (CmpU op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, zr, $lbl\t#@far_cmpUEqNeLeGt_reg_imm0_loop" %}
ins_encode %{
__ enc_cmpUEqNeLeGt_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmpz_branch);
%}
// compare lt/ge unsigned instructs has no short instruct with same match
instruct far_cmpULtGe_reg_imm0_branch(cmpOpULtGe cmp, iRegI op1, immI0 zero, label lbl)
%{
@ -9775,21 +9457,6 @@ instruct far_cmpULtGe_reg_imm0_branch(cmpOpULtGe cmp, iRegI op1, immI0 zero, lab
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpULtGe_reg_imm0_loop(cmpOpULtGe cmp, iRegI op1, immI0 zero, label lbl)
%{
match(CountedLoopEnd cmp (CmpU op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST);
format %{ "j $lbl if $cmp == ge\t#@far_cmpULtGe_reg_imm0_loop" %}
ins_encode(riscv_enc_far_cmpULtGe_imm0_branch(cmp, op1, lbl));
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpL_reg_imm0_branch(cmpOp cmp, iRegL op1, immL0 zero, label lbl)
%{
match(If cmp (CmpL op1 zero));
@ -9841,23 +9508,6 @@ instruct far_cmpULEqNeLeGt_reg_imm0_branch(cmpOpUEqNeLeGt cmp, iRegL op1, immL0
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpULEqNeLeGt_reg_imm0_loop(cmpOpUEqNeLeGt cmp, iRegL op1, immL0 zero, label lbl)
%{
match(CountedLoopEnd cmp (CmpUL op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, zr, $lbl\t#@far_cmpULEqNeLeGt_reg_imm0_loop" %}
ins_encode %{
__ enc_cmpUEqNeLeGt_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmpz_branch);
%}
// compare lt/ge unsigned instructs has no short instruct with same match
instruct far_cmpULLtGe_reg_imm0_branch(cmpOpULtGe cmp, iRegL op1, immL0 zero, label lbl)
%{
@ -9874,21 +9524,6 @@ instruct far_cmpULLtGe_reg_imm0_branch(cmpOpULtGe cmp, iRegL op1, immL0 zero, la
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpULLtGe_reg_imm0_loop(cmpOpULtGe cmp, iRegL op1, immL0 zero, label lbl)
%{
match(CountedLoopEnd cmp (CmpUL op1 zero));
effect(USE op1, USE lbl);
ins_cost(BRANCH_COST);
format %{ "j $lbl if $cmp == ge\t#@far_cmpULLtGe_reg_imm0_loop" %}
ins_encode(riscv_enc_far_cmpULtGe_imm0_branch(cmp, op1, lbl));
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpP_imm0_branch(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %{
match(If cmp (CmpP op1 zero));
effect(USE lbl);
@ -9903,20 +9538,6 @@ instruct far_cmpP_imm0_branch(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpP_imm0_loop(cmpOpEqNe cmp, iRegP op1, immP0 zero, label lbl) %{
match(CountedLoopEnd cmp (CmpP op1 zero));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, zr, $lbl\t#@far_cmpP_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpN_imm0_branch(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %{
match(If cmp (CmpN op1 zero));
effect(USE lbl);
@ -9932,21 +9553,6 @@ instruct far_cmpN_imm0_branch(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpN_imm0_loop(cmpOpEqNe cmp, iRegN op1, immN0 zero, label lbl) %{
match(CountedLoopEnd cmp (CmpN op1 zero));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, zr, $lbl\t#@far_cmpN_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpP_narrowOop_imm0_branch(cmpOpEqNe cmp, iRegN op1, immP0 zero, label lbl) %{
match(If cmp (CmpP (DecodeN op1) zero));
effect(USE lbl);
@ -9961,20 +9567,6 @@ instruct far_cmpP_narrowOop_imm0_branch(cmpOpEqNe cmp, iRegN op1, immP0 zero, la
ins_pipe(pipe_cmpz_branch);
%}
instruct far_cmpP_narrowOop_imm0_loop(cmpOpEqNe cmp, iRegN op1, immP0 zero, label lbl) %{
match(CountedLoopEnd cmp (CmpP (DecodeN op1) zero));
effect(USE lbl);
ins_cost(BRANCH_COST * 2);
format %{ "far_b$cmp $op1, zr, $lbl\t#@far_cmpP_narrowOop_imm0_loop" %}
ins_encode %{
__ enc_cmpEqNe_imm0_branch($cmp$$cmpcode, as_Register($op1$$reg), *($lbl$$label), /* is_far */ true);
%}
ins_pipe(pipe_cmpz_branch);
%}
// ============================================================================
// Conditional Move Instructions
instruct cmovI_cmpI(iRegINoSp dst, iRegI src, iRegI op1, iRegI op2, cmpOp cop) %{

View File

@ -12681,35 +12681,6 @@ instruct jmpLoopEnd(cmpOp cop, eFlagsReg cr, label labl) %{
ins_pipe( pipe_jcc );
%}
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "J$cop,u $labl\t# Loop end" %}
size(6);
ins_encode %{
Label* L = $labl$$label;
__ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
%}
ins_pipe( pipe_jcc );
%}
instruct jmpLoopEndUCF(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(200);
format %{ "J$cop,u $labl\t# Loop end" %}
size(6);
ins_encode %{
Label* L = $labl$$label;
__ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
%}
ins_pipe( pipe_jcc );
%}
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
match(If cop cmp);
@ -12873,37 +12844,6 @@ instruct jmpLoopEnd_short(cmpOp cop, eFlagsReg cr, label labl) %{
ins_short_branch(1);
%}
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU_short(cmpOpU cop, eFlagsRegU cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "J$cop,us $labl\t# Loop end" %}
size(2);
ins_encode %{
Label* L = $labl$$label;
__ jccb((Assembler::Condition)($cop$$cmpcode), *L);
%}
ins_pipe( pipe_jcc );
ins_short_branch(1);
%}
instruct jmpLoopEndUCF_short(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "J$cop,us $labl\t# Loop end" %}
size(2);
ins_encode %{
Label* L = $labl$$label;
__ jccb((Assembler::Condition)($cop$$cmpcode), *L);
%}
ins_pipe( pipe_jcc );
ins_short_branch(1);
%}
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU_short(cmpOpU cop, eFlagsRegU cmp, label labl) %{
match(If cop cmp);

View File

@ -13053,35 +13053,6 @@ instruct jmpLoopEnd(cmpOp cop, rFlagsReg cr, label labl)
ins_pipe(pipe_jcc);
%}
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU(cmpOpU cop, rFlagsRegU cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "j$cop,u $labl\t# loop end" %}
size(6);
ins_encode %{
Label* L = $labl$$label;
__ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
%}
ins_pipe(pipe_jcc);
%}
instruct jmpLoopEndUCF(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(200);
format %{ "j$cop,u $labl\t# loop end" %}
size(6);
ins_encode %{
Label* L = $labl$$label;
__ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
%}
ins_pipe(pipe_jcc);
%}
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU(cmpOpU cop, rFlagsRegU cmp, label labl) %{
match(If cop cmp);
@ -13254,37 +13225,6 @@ instruct jmpLoopEnd_short(cmpOp cop, rFlagsReg cr, label labl) %{
ins_short_branch(1);
%}
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU_short(cmpOpU cop, rFlagsRegU cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "j$cop,us $labl\t# loop end" %}
size(2);
ins_encode %{
Label* L = $labl$$label;
__ jccb((Assembler::Condition)($cop$$cmpcode), *L);
%}
ins_pipe(pipe_jcc);
ins_short_branch(1);
%}
instruct jmpLoopEndUCF_short(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{
match(CountedLoopEnd cop cmp);
effect(USE labl);
ins_cost(300);
format %{ "j$cop,us $labl\t# loop end" %}
size(2);
ins_encode %{
Label* L = $labl$$label;
__ jccb((Assembler::Condition)($cop$$cmpcode), *L);
%}
ins_pipe(pipe_jcc);
ins_short_branch(1);
%}
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU_short(cmpOpU cop, rFlagsRegU cmp, label labl) %{
match(If cop cmp);