< prev index next >
src/hotspot/cpu/x86/x86_32.ad
Print this page
@@ -7753,10 +7753,20 @@
opcode(0xAF, 0x0F);
ins_encode( OpcS, OpcP, RegMem( dst, src) );
ins_pipe( ialu_reg_mem_alu0 );
%}
+instruct mulAddS2I_rReg(rRegI dst, rRegI src1, rRegI src2, rRegI src3, eFlagsReg cr)
+%{
+ match(Set dst (MulAddS2I (Binary dst src1) (Binary src2 src3)));
+ effect(KILL cr, KILL src2);
+
+ expand %{ mulI_rReg(dst, src1, cr);
+ mulI_rReg(src2, src3, cr);
+ addI_rReg(dst, src2, cr); %}
+%}
+
// Multiply Register Int to Long
instruct mulI2L(eADXRegL dst, eAXRegI src, nadxRegI src1, eFlagsReg flags) %{
// Basic Idea: long = (long)int * (long)int
match(Set dst (MulL (ConvI2L src) (ConvI2L src1)));
effect(DEF dst, USE src, USE src1, KILL flags);
< prev index next >