3111 __ pause(); |
3111 __ pause(); |
3112 %} |
3112 %} |
3113 ins_pipe(pipe_slow); |
3113 ins_pipe(pipe_slow); |
3114 %} |
3114 %} |
3115 |
3115 |
|
3116 // a * b + c |
|
3117 instruct fmaD_reg(regD a, regD b, regD c) %{ |
|
3118 predicate(UseFMA); |
|
3119 match(Set c (FmaD c (Binary a b))); |
|
3120 format %{ "fmasd $a,$b,$c\t# $c = $a * $b + $c" %} |
|
3121 ins_cost(150); |
|
3122 ins_encode %{ |
|
3123 __ fmad($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister); |
|
3124 %} |
|
3125 ins_pipe( pipe_slow ); |
|
3126 %} |
|
3127 |
|
3128 // a * b + c |
|
3129 instruct fmaF_reg(regF a, regF b, regF c) %{ |
|
3130 predicate(UseFMA); |
|
3131 match(Set c (FmaF c (Binary a b))); |
|
3132 format %{ "fmass $a,$b,$c\t# $c = $a * $b + $c" %} |
|
3133 ins_cost(150); |
|
3134 ins_encode %{ |
|
3135 __ fmaf($c$$XMMRegister, $a$$XMMRegister, $b$$XMMRegister, $c$$XMMRegister); |
|
3136 %} |
|
3137 ins_pipe( pipe_slow ); |
|
3138 %} |
|
3139 |
3116 // ====================VECTOR INSTRUCTIONS===================================== |
3140 // ====================VECTOR INSTRUCTIONS===================================== |
3117 |
3141 |
3118 // Load vectors (4 bytes long) |
3142 // Load vectors (4 bytes long) |
3119 instruct loadV4(vecS dst, memory mem) %{ |
3143 instruct loadV4(vecS dst, memory mem) %{ |
3120 predicate(n->as_LoadVector()->memory_size() == 4); |
3144 predicate(n->as_LoadVector()->memory_size() == 4); |