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 %{ |