https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
Uroš Bizjak changed:
What|Removed |Added
Status|ASSIGNED|RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #8 from CVS Commits ---
The master branch has been updated by Uros Bizjak :
https://gcc.gnu.org/g:59119253b3133b30114194a04171f9d353b5c7f7
commit r13-38-g59119253b3133b30114194a04171f9d353b5c7f7
Author: Uros Bizjak
Date: Fri Apr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
Uroš Bizjak changed:
What|Removed |Added
Status|NEW |ASSIGNED
Assignee|unassigned at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #7 from Uroš Bizjak ---
(In reply to Hongtao.liu from comment #5)
> >
> > Yes, neg rdx = (0 - rdx) = (0 - (rdx + CF)(last def)) = (sbb 0, rdx)
>
> And we need an extra register for it.
The patch in Comment #6 does a conversion, but
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #6 from Uroš Bizjak ---
Created attachment 52481
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52481&action=edit
Proposed patch
+;; Convert:
+;; mov %esi, %edx
+;; negl %eax
+;; adcl $0, %edx
+;; negl %edx
+;; to:
+;;
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #5 from Hongtao.liu ---
>
> Yes, neg rdx = (0 - rdx) = (0 - (rdx + CF)(last def)) = (sbb 0, rdx)
And we need an extra register for it.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #4 from Hongtao.liu ---
(In reply to Andrew Pinski from comment #2)
> We get this now:
>
> movq%rdi, %rax
> movq%rsi, %rdx
> negq%rax
> adcq$0, %rdx
> negq%rdx
>
> ICC prod
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
Andrew Pinski changed:
What|Removed |Added
CC||gabravier at gmail dot com
--- Comment #
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51954
--- Comment #2 from Andrew Pinski ---
We get this now:
movq%rdi, %rax
movq%rsi, %rdx
negq%rax
adcq$0, %rdx
negq%rdx
ICC produces:
xorl %edx, %edx