comparison src/cpu/x86/vm/x86_64.ad @ 24206:37ba410ffd43 jdk8u141-b08

8173770: Image conversion improvements Reviewed-by: kvn, vlivanov, dlong, rhalade, mschoene, iignatyev
author thartmann
date Thu, 30 Mar 2017 15:28:33 +0200
parents c3d0bd36ab28
children 719853999215
comparison
equal deleted inserted replaced
24205:b1f3fbe39975 24206:37ba410ffd43
11066 "done:" %} 11066 "done:" %}
11067 ins_encode(cmpl3_flag(src1, src2, dst)); 11067 ins_encode(cmpl3_flag(src1, src2, dst));
11068 ins_pipe(pipe_slow); 11068 ins_pipe(pipe_slow);
11069 %} 11069 %}
11070 11070
11071 // Unsigned long compare Instructions; really, same as signed long except they
11072 // produce an rFlagsRegU instead of rFlagsReg.
11073 instruct compUL_rReg(rFlagsRegU cr, rRegL op1, rRegL op2)
11074 %{
11075 match(Set cr (CmpUL op1 op2));
11076
11077 format %{ "cmpq $op1, $op2\t# unsigned" %}
11078 opcode(0x3B); /* Opcode 3B /r */
11079 ins_encode(REX_reg_reg_wide(op1, op2), OpcP, reg_reg(op1, op2));
11080 ins_pipe(ialu_cr_reg_reg);
11081 %}
11082
11083 instruct compUL_rReg_imm(rFlagsRegU cr, rRegL op1, immL32 op2)
11084 %{
11085 match(Set cr (CmpUL op1 op2));
11086
11087 format %{ "cmpq $op1, $op2\t# unsigned" %}
11088 opcode(0x81, 0x07); /* Opcode 81 /7 */
11089 ins_encode(OpcSErm_wide(op1, op2), Con8or32(op2));
11090 ins_pipe(ialu_cr_reg_imm);
11091 %}
11092
11093 instruct compUL_rReg_mem(rFlagsRegU cr, rRegL op1, memory op2)
11094 %{
11095 match(Set cr (CmpUL op1 (LoadL op2)));
11096
11097 format %{ "cmpq $op1, $op2\t# unsigned" %}
11098 opcode(0x3B); /* Opcode 3B /r */
11099 ins_encode(REX_reg_mem_wide(op1, op2), OpcP, reg_mem(op1, op2));
11100 ins_pipe(ialu_cr_reg_mem);
11101 %}
11102
11103 instruct testUL_reg(rFlagsRegU cr, rRegL src, immL0 zero)
11104 %{
11105 match(Set cr (CmpUL src zero));
11106
11107 format %{ "testq $src, $src\t# unsigned" %}
11108 opcode(0x85);
11109 ins_encode(REX_reg_reg_wide(src, src), OpcP, reg_reg(src, src));
11110 ins_pipe(ialu_cr_reg_imm);
11111 %}
11112
11071 //----------Max and Min-------------------------------------------------------- 11113 //----------Max and Min--------------------------------------------------------
11072 // Min Instructions 11114 // Min Instructions
11073 11115
11074 instruct cmovI_reg_g(rRegI dst, rRegI src, rFlagsReg cr) 11116 instruct cmovI_reg_g(rRegI dst, rRegI src, rFlagsReg cr)
11075 %{ 11117 %{