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