https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #8 from uros at gcc dot gnu.org ---
Author: uros
Date: Mon Dec 26 19:00:47 2016
New Revision: 243929
URL: https://gcc.gnu.org/viewcvs?rev=243929=gcc=rev
Log:
PR target/78904
* config/i386/i386.md (addqi_ext_1):
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #7 from Segher Boessenkool ---
Ah, "high byte" registers are never a separate register in the i386
backend, I see.
combine would need to combine four insns to arrive at your current
pattern, but it doesn't try because it thinks they
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #6 from Uroš Bizjak ---
A better testcase:
--cut here--
struct S1
{
char pad1;
unsigned char val;
short pad2;
};
struct S1 test (struct S1 a, struct S1 b)
{
a.val += b.val;
return a;
}
--cut here--
compiles with -O2 to:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #5 from Uroš Bizjak ---
Created attachment 40405
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40405=edit
Prototype patch for addqi_ext_[1,2] patterns
The prototype patch compiles the testcase to:
movl%edi, %edx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #4 from Uroš Bizjak ---
(In reply to Segher Boessenkool from comment #3)
> (In reply to Uroš Bizjak from comment #2)
> > No, unfortunately the above is not a valid x86 insn. x86 has two-operand
> > instructions, so output has to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #3 from Segher Boessenkool ---
(In reply to Uroš Bizjak from comment #2)
> No, unfortunately the above is not a valid x86 insn. x86 has two-operand
> instructions, so output has to match one of the operands.
But these are pseudos.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #2 from Uroš Bizjak ---
(In reply to Segher Boessenkool from comment #1)
> ===
> Trying 10, 9 -> 11:
> Failed to match this instruction:
> (parallel [
> (set (reg:QI 88 [ _2 ])
> (plus:QI (subreg:QI
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
Segher Boessenkool changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|