On Sun, Dec 1, 2019 at 6:55 PM Jakub Jelinek <ja...@redhat.com> wrote: > > On Sun, Dec 01, 2019 at 03:43:37PM +0100, Jan Hubicka wrote: > > > PR target/92549 > > > * config/i386/i386.md (peephole2 for *swap<mode>): New peephole2. > > > > > > * gcc.target/i386/pr92549.c: New test. > > > > It is very hard to get a testcase, unforutnately, but I got the > > following (locally non-reproducible) failure while building firefox with > > LTO+FDO: > > > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - 1080 | } > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - | > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (insn 5555 1389 1390 > > 41 (parallel [ > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (set > > (reg:SI 24 xmm4 [orig:187 SR.3778 ] [187]) > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (reg:SI 23 xmm3 > > [orig:104 SR.3780 ] [104])) > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (set > > (reg:SI 23 xmm3 [orig:104 SR.3780 ] [104]) > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (reg:SI 24 xmm4 > > [orig:187 SR.3778 ] [187])) > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - ]) > > "/builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h":1117:0 > > 78 {*swapsi} > > [task 2019-12-01T14:38:04.167Z] 14:38:04 INFO - (nil)) > > [task 2019-12-01T14:38:04.167Z] 14:38:04 INFO - during RTL pass: rnreg > > > > I guess the problem is that there is no xchange in SSE instruction set, > > so peephle needs to be more restrictive? > > I'll have a look tomorrow.
general_reg_operand should be used in the pattern. Uros.