8158 ins_cost(350); 8159 format %{ "imull $dst, $src\t# int" %} 8160 opcode(0x0F, 0xAF); 8161 ins_encode(REX_reg_mem(dst, src), OpcP, OpcS, reg_mem(dst, src)); 8162 ins_pipe(ialu_reg_mem_alu0); 8163 %} 8164 8165 instruct mulI_mem_imm(rRegI dst, memory src, immI imm, rFlagsReg cr) 8166 %{ 8167 match(Set dst (MulI (LoadI src) imm)); 8168 effect(KILL cr); 8169 8170 ins_cost(300); 8171 format %{ "imull $dst, $src, $imm\t# int" %} 8172 opcode(0x69); /* 69 /r id */ 8173 ins_encode(REX_reg_mem(dst, src), 8174 OpcSE(imm), reg_mem(dst, src), Con8or32(imm)); 8175 ins_pipe(ialu_reg_mem_alu0); 8176 %} 8177 8178 instruct mulL_rReg(rRegL dst, rRegL src, rFlagsReg cr) 8179 %{ 8180 match(Set dst (MulL dst src)); 8181 effect(KILL cr); 8182 8183 ins_cost(300); 8184 format %{ "imulq $dst, $src\t# long" %} 8185 opcode(0x0F, 0xAF); 8186 ins_encode(REX_reg_reg_wide(dst, src), OpcP, OpcS, reg_reg(dst, src)); 8187 ins_pipe(ialu_reg_reg_alu0); 8188 %} 8189 8190 instruct mulL_rReg_imm(rRegL dst, rRegL src, immL32 imm, rFlagsReg cr) 8191 %{ 8192 match(Set dst (MulL src imm)); 8193 effect(KILL cr); 8194 8195 ins_cost(300); 8196 format %{ "imulq $dst, $src, $imm\t# long" %} 8197 opcode(0x69); /* 69 /r id */ | 8158 ins_cost(350); 8159 format %{ "imull $dst, $src\t# int" %} 8160 opcode(0x0F, 0xAF); 8161 ins_encode(REX_reg_mem(dst, src), OpcP, OpcS, reg_mem(dst, src)); 8162 ins_pipe(ialu_reg_mem_alu0); 8163 %} 8164 8165 instruct mulI_mem_imm(rRegI dst, memory src, immI imm, rFlagsReg cr) 8166 %{ 8167 match(Set dst (MulI (LoadI src) imm)); 8168 effect(KILL cr); 8169 8170 ins_cost(300); 8171 format %{ "imull $dst, $src, $imm\t# int" %} 8172 opcode(0x69); /* 69 /r id */ 8173 ins_encode(REX_reg_mem(dst, src), 8174 OpcSE(imm), reg_mem(dst, src), Con8or32(imm)); 8175 ins_pipe(ialu_reg_mem_alu0); 8176 %} 8177 8178 instruct mulAddS2I_rReg(rRegI dst, rRegI src1, rRegI src2, rRegI src3, rFlagsReg cr) 8179 %{ 8180 match(Set dst (MulAddS2I (Binary dst src1) (Binary src2 src3))); 8181 effect(KILL cr, KILL src2); 8182 8183 expand %{ mulI_rReg(dst, src1, cr); 8184 mulI_rReg(src2, src3, cr); 8185 addI_rReg(dst, src2, cr); %} 8186 %} 8187 8188 instruct mulL_rReg(rRegL dst, rRegL src, rFlagsReg cr) 8189 %{ 8190 match(Set dst (MulL dst src)); 8191 effect(KILL cr); 8192 8193 ins_cost(300); 8194 format %{ "imulq $dst, $src\t# long" %} 8195 opcode(0x0F, 0xAF); 8196 ins_encode(REX_reg_reg_wide(dst, src), OpcP, OpcS, reg_reg(dst, src)); 8197 ins_pipe(ialu_reg_reg_alu0); 8198 %} 8199 8200 instruct mulL_rReg_imm(rRegL dst, rRegL src, immL32 imm, rFlagsReg cr) 8201 %{ 8202 match(Set dst (MulL src imm)); 8203 effect(KILL cr); 8204 8205 ins_cost(300); 8206 format %{ "imulq $dst, $src, $imm\t# long" %} 8207 opcode(0x69); /* 69 /r id */ |