12029 instruct testUL_reg(rFlagsRegU cr, rRegL src, immL0 zero)
12030 %{
12031 match(Set cr (CmpUL src zero));
12032
12033 format %{ "testq $src, $src\t# unsigned" %}
12034 opcode(0x85);
12035 ins_encode(REX_reg_reg_wide(src, src), OpcP, reg_reg(src, src));
12036 ins_pipe(ialu_cr_reg_imm);
12037 %}
12038
12039 instruct compB_mem_imm(rFlagsReg cr, memory mem, immI8 imm)
12040 %{
12041 match(Set cr (CmpI (LoadB mem) imm));
12042
12043 ins_cost(125);
12044 format %{ "cmpb $mem, $imm" %}
12045 ins_encode %{ __ cmpb($mem$$Address, $imm$$constant); %}
12046 ins_pipe(ialu_cr_reg_mem);
12047 %}
12048
12049 instruct testB_mem_imm(rFlagsReg cr, memory mem, immI8 imm, immI0 zero)
12050 %{
12051 match(Set cr (CmpI (AndI (LoadB mem) imm) zero));
12052
12053 ins_cost(125);
12054 format %{ "testb $mem, $imm" %}
12055 ins_encode %{ __ testb($mem$$Address, $imm$$constant); %}
12056 ins_pipe(ialu_cr_reg_mem);
12057 %}
12058
12059 //----------Max and Min--------------------------------------------------------
12060 // Min Instructions
12061
12062 instruct cmovI_reg_g(rRegI dst, rRegI src, rFlagsReg cr)
12063 %{
12064 effect(USE_DEF dst, USE src, USE cr);
12065
12066 format %{ "cmovlgt $dst, $src\t# min" %}
12067 opcode(0x0F, 0x4F);
12068 ins_encode(REX_reg_reg(dst, src), OpcP, OpcS, reg_reg(dst, src));
12069 ins_pipe(pipe_cmov_reg);
12070 %}
12071
|
12029 instruct testUL_reg(rFlagsRegU cr, rRegL src, immL0 zero)
12030 %{
12031 match(Set cr (CmpUL src zero));
12032
12033 format %{ "testq $src, $src\t# unsigned" %}
12034 opcode(0x85);
12035 ins_encode(REX_reg_reg_wide(src, src), OpcP, reg_reg(src, src));
12036 ins_pipe(ialu_cr_reg_imm);
12037 %}
12038
12039 instruct compB_mem_imm(rFlagsReg cr, memory mem, immI8 imm)
12040 %{
12041 match(Set cr (CmpI (LoadB mem) imm));
12042
12043 ins_cost(125);
12044 format %{ "cmpb $mem, $imm" %}
12045 ins_encode %{ __ cmpb($mem$$Address, $imm$$constant); %}
12046 ins_pipe(ialu_cr_reg_mem);
12047 %}
12048
12049 instruct testUB_mem_imm(rFlagsReg cr, memory mem, immU8 imm, immI0 zero)
12050 %{
12051 match(Set cr (CmpI (AndI (LoadUB mem) imm) zero));
12052
12053 ins_cost(125);
12054 format %{ "testb $mem, $imm" %}
12055 ins_encode %{ __ testb($mem$$Address, $imm$$constant); %}
12056 ins_pipe(ialu_cr_reg_mem);
12057 %}
12058
12059 //----------Max and Min--------------------------------------------------------
12060 // Min Instructions
12061
12062 instruct cmovI_reg_g(rRegI dst, rRegI src, rFlagsReg cr)
12063 %{
12064 effect(USE_DEF dst, USE src, USE cr);
12065
12066 format %{ "cmovlgt $dst, $src\t# min" %}
12067 opcode(0x0F, 0x4F);
12068 ins_encode(REX_reg_reg(dst, src), OpcP, OpcS, reg_reg(dst, src));
12069 ins_pipe(pipe_cmov_reg);
12070 %}
12071
|