https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123144
Avinash Jayakar <avinashd at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |wilson at tuliptree dot org
--- Comment #8 from Avinash Jayakar <avinashd at gcc dot gnu.org> ---
I see some discrepancy in max pressure values. The model_schedule has
instructions only in the basic block, but in region scheduling inter block
instructions are considered. So when model_recompute is done after scheduling
an insn, even though the instruction is not in the model the registers are
marked for death.
Is this expected? Here are some logs of model pressure values before and after
scheduling an instruction
The table of (ref_pressure, max_pressure). vertical axis is model insns,
horizontal axis is register classes.
Before r301=unspec[r234#0,0] 330(16)(304)
;; GENERAL_REGS:20(-7) ALTIVEC_REGS:2(-29) VSX_REGS:0(-61)
CR_REGS:0(-8) SPECIAL_REGS:0(-2)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
After r301=unspec[r234#0,0] 330(16)(304)
;; GENERAL_REGS:20(-7) ALTIVEC_REGS:3(-28) VSX_REGS:0(-61)
CR_REGS:0(-8) SPECIAL_REGS:0(-2)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0)
(20,20) (2,2) (0,0) (0,0) (0,0) -> shouldnt these also become (3,3) like
ALTIVEC_REGS?
In model_recompute function haifa-sched.cc:2147, shouldnt the deaths be
recorded only if point!=model_num_insns, meaning that for loop should run if
the insn is within the model right?