On 11/08/2017 11:30 AM, Segher Boessenkool wrote:
>> --- gcc/config/rs6000/power9.md (revision 254377)
>> +++ gcc/config/rs6000/power9.md (working copy)
>> @@ -436,6 +436,12 @@ (define_insn_reservation "power9-qpdiv"
>> (eq_attr "cpu" "power9"))
>> "DU_super_power9,dfu_power9")
>>
>> +(define_insn_reservation "power9-qpmul" 24
>> + (and (eq_attr "type" "qmul")
>> + (eq_attr "size" "128")
>> + (eq_attr "cpu" "power9"))
>> + "DU_super_power9,dfu_power9*12")
> All other p9 reservations (other than integer div) do not reserve a
> unit more than one cycle. Will this blow up size of the automaton?
> If not, should the other qp ops not reserve for more cycles, too?
>
You are observant. :) I should have just included the change for qp
divide in this patch since it's so simple, but didn't. The qp divide
also blocks the pipe for a number of cycles, so yes should be changed.
The other qp insns (add/sub/etc) do not, so are correct as is.
> Rest looks fine; okay for trunk with the reservation thing taken care
> of one way or the other. Thanks!
Following is additional change I'll include along with updated
ChangeLog. Testing was fine.
@@ -434,8 +434,14 @@
(and (eq_attr "type" "vecdiv")
(eq_attr "size" "128")
(eq_attr "cpu" "power9"))
- "DU_super_power9,dfu_power9")
+ "DU_super_power9,dfu_power9*44")