< prev index next >

src/cpu/x86/vm/x86_64.ad

Print this page

        

*** 10949,10958 **** --- 10949,10982 ---- $tmp4$$XMMRegister, $tmp5$$Register, $result$$Register); %} ins_pipe( pipe_slow ); %} + // fma - double - a * b + c + instruct fmaD_reg(regD a, regD b, regD c) %{ + predicate(UseFMA); + match(Set c (FmaD c (Binary a b))); + format %{ "fmasd $a,$b,$c -> $c" %} + ins_cost(150); + ins_encode %{ + __ vfmadd231sd($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister); + %} + ins_pipe( pipe_slow ); + %} + + // fma - float - a * b + c + instruct fmaF_reg(regF a, regF b, regF c) %{ + predicate(UseFMA); + match(Set c (FmaF c (Binary a b))); + format %{ "fmass $a,$b,$c -> $c" %} + ins_cost(150); + ins_encode %{ + __ vfmadd231ss($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister); + %} + ins_pipe( pipe_slow ); + %} + //----------Overflow Math Instructions----------------------------------------- instruct overflowAddI_rReg(rFlagsReg cr, rax_RegI op1, rRegI op2) %{ match(Set cr (OverflowAddI op1 op2));
< prev index next >