https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #8 from Hongtao.liu ---
(In reply to Alexander Monakov from comment #7)
> The second sequence is 3 uops vs 1/2 (issued/executed) uops in first, and on
> Haswell and Skylake it ties up port 5 for two cycles.
>
> Unclear if you're
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #7 from Alexander Monakov ---
The second sequence is 3 uops vs 1/2 (issued/executed) uops in first, and on
Haswell and Skylake it ties up port 5 for two cycles.
Unclear if you're microbenchmarking latency or throughput, but in any
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #6 from Hongtao.liu ---
Also notice a intersting case impacted by a separate m alternatvie.
typedef long v2di __attribute__((vector_size(16)));
v2di
foo (v2di a)
{
a[1] = 1113;
return a;
}
with -O2 gcc generates
foo(long
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #5 from Hongtao.liu ---
And for constraint like 'vm', it's different from 'v,m' in calculating mem_cost
which will impact RA when op is REG_P. For 'v,m' mem_cost is just 1 *
frequency, but for 'vm' mem_cost is much
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #4 from Hongtao.liu ---
For pattern supports 'm' alternative, mem_cost is frequency which is quite low
compared to pp->costs (ira_register_move_cost[mode][rclass][hard_reg_class]) *
frequency)
For x86 backend even gpr->gpr cost is
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #3 from Uroš Bizjak ---
(In reply to Hongtao.liu from comment #2)
> Just note #c4 in pr105504 also solve this issue.
>
> >Another possible solution is add a little bit dislike for "m"
> >alternative(like ?m) to avoid potential
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
--- Comment #2 from Hongtao.liu ---
Just note #c4 in pr105504 also solve this issue.
>Another possible solution is add a little bit dislike for "m" alternative(like
>?m) to avoid potential spill.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
Richard Biener changed:
What|Removed |Added
Priority|P3 |P2
Version|unknown
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105513
Andrew Pinski changed:
What|Removed |Added
Component|rtl-optimization|target
Target Milestone|---