# HG changeset patch # User lana # Date 1500653417 0 # Node ID d7baadc223e790c08bc69bf7e553bce65b4e7e40 # Parent 9a9d7ad6b2d96b3a99dd14526ee38b1d642c7e11# Parent 9f8ef620301e0c9ad29cf234e6cbe073120ca4f4 Merge diff -r 9a9d7ad6b2d9 -r d7baadc223e7 src/cpu/aarch64/vm/aarch64.ad --- a/src/cpu/aarch64/vm/aarch64.ad Thu Jul 20 21:12:20 2017 +0000 +++ b/src/cpu/aarch64/vm/aarch64.ad Fri Jul 21 16:10:17 2017 +0000 @@ -14392,7 +14392,7 @@ ins_pipe(icmp_reg_reg); %} -instruct compL_reg_immI0(rFlagsReg cr, iRegL op1, immI0 zero) +instruct compL_reg_immL0(rFlagsReg cr, iRegL op1, immL0 zero) %{ match(Set cr (CmpL op1 zero)); @@ -14434,6 +14434,62 @@ ins_pipe(icmp_reg_imm); %} +instruct compUL_reg_reg(rFlagsRegU cr, iRegL op1, iRegL op2) +%{ + match(Set cr (CmpUL op1 op2)); + + effect(DEF cr, USE op1, USE op2); + + ins_cost(INSN_COST); + format %{ "cmp $op1, $op2" %} + + ins_encode(aarch64_enc_cmp(op1, op2)); + + ins_pipe(icmp_reg_reg); +%} + +instruct compUL_reg_immL0(rFlagsRegU cr, iRegL op1, immL0 zero) +%{ + match(Set cr (CmpUL op1 zero)); + + effect(DEF cr, USE op1); + + ins_cost(INSN_COST); + format %{ "tst $op1" %} + + ins_encode(aarch64_enc_cmp_imm_addsub(op1, zero)); + + ins_pipe(icmp_reg_imm); +%} + +instruct compUL_reg_immLAddSub(rFlagsRegU cr, iRegL op1, immLAddSub op2) +%{ + match(Set cr (CmpUL op1 op2)); + + effect(DEF cr, USE op1); + + ins_cost(INSN_COST); + format %{ "cmp $op1, $op2" %} + + ins_encode(aarch64_enc_cmp_imm_addsub(op1, op2)); + + ins_pipe(icmp_reg_imm); +%} + +instruct compUL_reg_immL(rFlagsRegU cr, iRegL op1, immL op2) +%{ + match(Set cr (CmpUL op1 op2)); + + effect(DEF cr, USE op1); + + ins_cost(INSN_COST * 2); + format %{ "cmp $op1, $op2" %} + + ins_encode(aarch64_enc_cmp_imm(op1, op2)); + + ins_pipe(icmp_reg_imm); +%} + instruct compP_reg_reg(rFlagsRegU cr, iRegP op1, iRegP op2) %{ match(Set cr (CmpP op1 op2)); @@ -14918,7 +14974,7 @@ %} instruct cmpUL_imm0_branch(cmpOpUEqNeLtGe cmp, iRegL op1, immL0 op2, label labl, rFlagsRegU cr) %{ - match(If cmp (CmpU op1 op2)); + match(If cmp (CmpUL op1 op2)); effect(USE labl); ins_cost(BRANCH_COST);