2780 ins_pipe(pipe_slow); 2781 %} 2782 2783 instruct sqrtD_imm(regD dst, immD con) %{ 2784 predicate(UseSSE>=2); 2785 match(Set dst (SqrtD con)); 2786 format %{ "sqrtsd $dst, [$constantaddress]\t# load from constant table: double=$con" %} 2787 ins_cost(150); 2788 ins_encode %{ 2789 __ sqrtsd($dst$$XMMRegister, $constantaddress($con)); 2790 %} 2791 ins_pipe(pipe_slow); 2792 %} 2793 2794 instruct onspinwait() %{ 2795 match(OnSpinWait); 2796 ins_cost(200); 2797 2798 format %{ 2799 $$template 2800 if (os::is_MP()) { 2801 $$emit$$"pause\t! membar_onspinwait" 2802 } else { 2803 $$emit$$"MEMBAR-onspinwait ! (empty encoding)" 2804 } 2805 %} 2806 ins_encode %{ 2807 __ pause(); 2808 %} 2809 ins_pipe(pipe_slow); 2810 %} 2811 2812 // a * b + c 2813 instruct fmaD_reg(regD a, regD b, regD c) %{ 2814 predicate(UseFMA); 2815 match(Set c (FmaD c (Binary a b))); 2816 format %{ "fmasd $a,$b,$c\t# $c = $a * $b + $c" %} 2817 ins_cost(150); 2818 ins_encode %{ 2819 __ fmad($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister); 2820 %} 2821 ins_pipe( pipe_slow ); 2822 %} 2823 2824 // a * b + c | 2780 ins_pipe(pipe_slow); 2781 %} 2782 2783 instruct sqrtD_imm(regD dst, immD con) %{ 2784 predicate(UseSSE>=2); 2785 match(Set dst (SqrtD con)); 2786 format %{ "sqrtsd $dst, [$constantaddress]\t# load from constant table: double=$con" %} 2787 ins_cost(150); 2788 ins_encode %{ 2789 __ sqrtsd($dst$$XMMRegister, $constantaddress($con)); 2790 %} 2791 ins_pipe(pipe_slow); 2792 %} 2793 2794 instruct onspinwait() %{ 2795 match(OnSpinWait); 2796 ins_cost(200); 2797 2798 format %{ 2799 $$template 2800 $$emit$$"pause\t! membar_onspinwait" 2801 %} 2802 ins_encode %{ 2803 __ pause(); 2804 %} 2805 ins_pipe(pipe_slow); 2806 %} 2807 2808 // a * b + c 2809 instruct fmaD_reg(regD a, regD b, regD c) %{ 2810 predicate(UseFMA); 2811 match(Set c (FmaD c (Binary a b))); 2812 format %{ "fmasd $a,$b,$c\t# $c = $a * $b + $c" %} 2813 ins_cost(150); 2814 ins_encode %{ 2815 __ fmad($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister); 2816 %} 2817 ins_pipe( pipe_slow ); 2818 %} 2819 2820 // a * b + c |