[Bug middle-end/78904] zero-extracts are not effective

2016-12-26 Thread uros at gcc dot gnu.org
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):

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread segher at gcc dot gnu.org
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

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread ubizjak at gmail dot com
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:

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread ubizjak at gmail dot com
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

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread ubizjak at gmail dot com
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

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread segher at gcc dot gnu.org
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.

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread ubizjak at gmail dot com
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

[Bug middle-end/78904] zero-extracts are not effective

2016-12-22 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904 Segher Boessenkool changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|