< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page
rev 53258 : Cherry-pick: 8213473: Replace testB_mem_imm matcher with testUB_mem_imm plus Shenandoah parts


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 


< prev index next >