< prev index next >

src/hotspot/cpu/x86/x86.ad

Print this page




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


< prev index next >